FileInputStream和FileOutputStream实现文件复制

在电脑中实现文件的复制是很简单的,cv操作即可。

但是如何使用Java代码实现一个文件的复制呢?这就需要借助内存了。

有了这张图我们就能很清晰的知道我们需要如何操作了。

创建一个FileInputStream对象
读取源文件数据
创建一个FileOutputStream对象
创建一个目标文件,并写入数据(别忘了flush())

采用一边读一边写的方式:

package com.dh.io;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileCopy {

    public static void main(String[] args) {

        FileInputStream fis = null;
        FileOutputStream fos = null;
        try {
            fis = new FileInputStream("C:\\Users\\DH\\Desktop\\test.txt");
            fos = new FileOutputStream("D:\\test.txt");

            byte[] bytes = new byte[1024*1024];

            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 {
            if(fos != null){
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(fis != null){
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

注意事项:在finally中,两个流的异常捕捉最好分开,如果放在一起的话,其中一个发生异常就会跳出{},可能会导致另外一个流无法关闭。

posted @ 2021-01-27 17:37  deng-hui  阅读(273)  评论(0编辑  收藏  举报