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 @ 2022-04-24 10:41  280887072  阅读(149)  评论(0编辑  收藏  举报