要实现文件的复制,有很多种方法。今天介绍一种最基础的方法:使用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);
}
}
通过测试,可以发现:
- 若源文件不存在,程序会正常给出提示
- 若源文件存在,则程序会自动复制该文件内容到目的文件