Java——FileInputStream&FileOutputStream字节流实现文件复制

要实现文件的复制,有很多种方法。今天介绍一种最基础的方法:使用FileInputStream和FileOutputStream实现文件的复制。


思路:

要实现文件的复制,其实质就是对源文件数据进行读取,再将这些数据写入目标文件,从而实现文件的复制。


实现:

创建IOUtils类及copyFile方法:

package fileCopy;

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

public class IOUtils {

    public static void copyFile(File src, File dest){
        if(!src.exists()){
            System.out.println("源文件不存在");
            return ;
        }
        try {
            FileInputStream fis = new FileInputStream(src);//创建文件输入流
            FileOutputStream fos = new FileOutputStream(dest);//创建文件输出流

            byte[] bytes = new byte[20*1024];//创建一个缓冲区
            int b;//记录读数据时的末尾位置
            while((b = fis.read(bytes, 0, bytes.length)) != -1){//如果未读到文件末尾
                fos.write(bytes, 0, b);//将缓冲区内的数据写入目标文件
                fos.flush();//刷新缓冲区
            }
            fos.close();
            fis.close();
            System.out.println("复制成功");
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

测试:

创建IOUtilsTest类及相应测试方法:

package test;

import java.io.File;

import org.junit.Test;

import fileCopy.IOUtils;

public class IOUtilsTest {

    @Test
    public void testCopyFile(){
        File src = new File("src/src.txt");
        File dest = new File("src/dest.txt");
        IOUtils.copyFile(src, dest);
    }

}

通过测试,可以发现:

  • 若源文件不存在,程序会正常给出提示
  • 若源文件存在,则程序会自动复制该文件内容到目的文件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章