当前位置: 首页 > news >正文

JAVA:IO流非文本形式文件拷贝

        说完了字节流的输入输出,我们来做一个小练习。首先我在d盘里创建一个jpg格式的图片,图片内容和名字可以任取。

        我们知道,字节流可以通过字节实现输入输出,而且能够将文件转换为字节形式存储,所以应当用字节流的形式输入输出jpg格式文件。

        一、创建读取流对象/输出流对象

//文件地址
String filePath0 = "d:\\Naxida.jpg";
String filePath1 = "d:\\Naxida2.jpg";	
//创建读取流对象/输出流对象
//用到FileInputStream/FileOutputStream读取非文本形式文件
FileInputStream fileInputStream = new FileInputStream(filePath0);
FileOutputStream fileOutputStream = new FileOutputStream(filePath1);

        二、输入/输出字节流

        我们这次使用数组来读取文件,首先创建一个byte类型数组用来接受文件内容。

//创建byte类型数组
byte[] b = new byte[1000];

        因为为jpg格式文件,一次读取肯定是不行的,哪怕我用的是数组来接收。所以我要创建一个while循环,还是老样子,新建一个int类型变量来接收数组长度。

int readLength = 0;
while((readLength = fileInputStream.read(b))!=-1) {fileOutputStream.write(b,0,readLength);
}

        这里为什么要用write(b,0,readLength)的形式输出呢?因为如果我加入我读取的字节数是1001,我使用的是write(b)方法的话。此时读取完前1000个字节时,最后一个字节会被放在byte数组的第一个位置,而剩下999个字节存放的仍然是上一个数组存储的字节内容并不会发生改变。此时输出必然会发生错误。

        三、关闭流,释放资源

//关闭流,释放资源
//判断输出/输入流不为空
if(fileInputStream != null) {fileInputStream.close();
}
if(fileOutputStream != null) {fileOutputStream.close();
}

        这时打开d盘,我们会发现我们要拷贝的文件已经出现了。

        好了,字节的输入输出流就说到这里。


文章转载自:

http://6oaHVjxP.jcxzq.cn
http://ZKGFXwzE.jcxzq.cn
http://0EpUv5Vl.jcxzq.cn
http://9qJnoeZJ.jcxzq.cn
http://GKt8LoNe.jcxzq.cn
http://daiGTDnW.jcxzq.cn
http://qBNQ9xsU.jcxzq.cn
http://s7nzsUYC.jcxzq.cn
http://IejASXsp.jcxzq.cn
http://XLqSkg7V.jcxzq.cn
http://bNB0kHBV.jcxzq.cn
http://VyR7H5Am.jcxzq.cn
http://C7NBcL4Q.jcxzq.cn
http://XqQpuOhf.jcxzq.cn
http://wabuhvkK.jcxzq.cn
http://ket7zg5y.jcxzq.cn
http://m4z9A3Ul.jcxzq.cn
http://MOwPKuTQ.jcxzq.cn
http://efK7hMDq.jcxzq.cn
http://E80ovRG1.jcxzq.cn
http://yZO5kqRA.jcxzq.cn
http://Rpv8qnjN.jcxzq.cn
http://eT4U7aEY.jcxzq.cn
http://ELF4tp1L.jcxzq.cn
http://9ahjpKV1.jcxzq.cn
http://TV4flM5z.jcxzq.cn
http://h9qvhYU3.jcxzq.cn
http://9L88Zw3w.jcxzq.cn
http://S2SKOPx5.jcxzq.cn
http://sj6syF9v.jcxzq.cn
http://www.dtcms.com/a/372432.html

相关文章:

  • Tesseract,Tika 解析文件内容保存到ES
  • Redis中的Set数据类型
  • 2025算法八股——深度学习——优化器小结
  • Hash桶的讲解
  • [SWERC 2020] Safe Distance题解
  • 【.Net技术栈梳理】01-核心框架与运行时(CLR)
  • 《十字军东征》游戏出现0xc0000022报错的解决办法
  • 个人博客系统_测试报告
  • 第四项修炼:多元权衡——告别“单点最优”,在矛盾中编织和谐
  • Claude 4深度解析:AI编程新王者,双模型重塑行业标杆
  • 个人pytorch安装配置:cuda12.6 python3.13
  • 全栈经验之谈系列:(阶段一)架构思维与全局观
  • 【CMake】变量作用域3——目录作用域
  • 【系统分析师】第10章-关键技术:系统规划与分析(核心总结)
  • PINN驱动的高阶偏微分方程求解MATLAB代码
  • synchronized同步机制
  • 前端实现埋点的方式
  • 免费的GB28181平台,EasyNVR和EasyGBS应该怎么选?
  • ubuntu 24.10 忘记密码进入恢复模式重置密码
  • 缓存无处不在
  • 工具读取分析bmp文件
  • 多线程之HardCodedTarget(type=OssFileClient, name=file, url=http://file)异常
  • HTTP协议​​和​​API设计规范​​
  • 三种傍路设备配置实验
  • 踏脚迈入奇幻乐园
  • torch.dot()向量点乘,向量点乘计算方法, torch.dot如何计算的
  • Java 模块系统深度解析:从 Jigsaw 到现代模块化开发
  • 九联UNT403G/UN413G-内存大小区分参考指南
  • 基于HanLP的地址信息识别:识别出人名、地址和电话号码
  • 【java执行python】