io-Inputstream+OutputStream 拷贝文件

使用Inputstream,OutputStream ,对文件进行拷贝:

1,这两个输入输出流拷贝只是拷贝单个文件,不包含文件夹;FileInputStream + FileOutputStream完成文件的拷贝。拷贝的过程应该是一边读,一边写。,文件类型随意,什么样的文件都能拷贝(图片、声音、world文档,.txt文档等等)。

2、输出流new对象之后一定要刷新: fos.flush()

3、输入流,输出流,在finally语句块中关闭时,要分开关闭

4、最核心的:一边读,一边写

byte[] bytes = new byte[1024 * 1024]; // 1MB(一次最多拷贝1MB。)

int readCount = 0;

while((readCount = fis.read(bytes)) != -1) {

fos.write(bytes, 0, readCount);

}

复制代码
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * IO流拷贝单个文件(不包含目录)
使用FileInputStream + FileOutputStream完成文件的拷贝。
拷贝的过程应该是一边读,一边写。
使用以上的字节流拷贝文件的时候,文件类型随意,万能的。什么样的文件都能拷贝。
*/ public class CopyTest01 { public static void main(String[] args) {
//创建一个输入流 FileInputStream fis
= null;
//创建一个输出流 FileOutputStream fos
= null; try { // 创建一个输入流对象 fis = new FileInputStream("E:\\javaseNote\\单例设计模式.md"); // 创建一个输出流对象 fos = new FileOutputStream("D:单例设计模式.md"); // 最核心的:一边读,一边写 byte[] bytes = new byte[1024 * 1024]; // 1MB(一次最多拷贝1MB。) int readCount = 0; while((readCount = fis.read(bytes)) != -1) { fos.write(bytes, 0, readCount); } // 刷新,输出流最后要刷新 fos.flush(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { // 分开try,不要一起try。 // 一起try的时候,其中一个出现异常,可能会影响到另一个流的关闭。 try { fis.close(); } catch (IOException e) { e.printStackTrace(); } try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } } }
复制代码

 

posted @   280887072  阅读(151)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示