首先,了解一下 Java IO 流的基本体系结构:
1、可以使用字节流抽象类 InputStream|OutputStream 的继承子类 FileInputStream|FileOutputStream 实现文本文件或非文本文件的复制操作;
2、可以使用字符流抽象类 Reader|Writer 的继承子类 FileReader|FileWriter 实现文本文件的复制;
3、如果想要提高效率,可以使用FileReader|FileWriter 对应的 缓冲流 BufferedReader|BufferedWriter,或 FileInputStream|FileOutputStream 对应的 BufferedInputStream|BufferedOutputStream;
缓冲流提高读写速度的原因:内部提供了一个缓冲区。默认情况下是8192字节(8kb)
1. FileReader\FileWriter实现文本文件复制操作
FileReader和FileWriter只能处理字符流
public void copy() throws IOException {
File srcFile = new File("src\\out.txt");
File destFile = new File("src\\out1.txt");
FileReader fr = new FileReader(srcFile);
FileWriter fw = new FileWriter(destFile);
int len = 0;
char[] cbuf = new char[5];
while((len = fr.read(cbuf)) != -1){
fw.write(cbuf, 0, len);
}
fw.close();
fr.close();
}
注意:
idea写相对路径时,用main方法测试,默认为当前工程(project)开始,用单元测试,默认为当前Module开始。
2. FileInputStream\FileOutputStream 实现文本文件或非文本文件的复制操作
写入数据时文件可以不存在,会创建一个,但是读数据的文件必