先简单说明一下,文本文件与后缀无关,不论是“.txt”,“.java”,还是“.什么”,只要能使用记事本/文本编辑打开/编辑的,都可以称为文本文件。相比于字节流拷贝文件而言,字符流拷贝文本文件更好用一些,但是对于其他类型的文件,字符流是不能拷贝的。
同时,对于write()方法而言,除了char[]数组以外,还可以直接使用String类型,非常方便,中文也是可以的,字节流则可能会乱码。
那么我们来看一看具体实现吧。
package iostream.FileWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/**
* 使用FileReader和FileWriter只能拷贝普通文本文件
*/
public class FileWriterTest2 {
public static void main(String[] args) {
FileReader fileReader = null;
FileWriter fileWriter = null;
try {
fileReader = new FileReader("/Users/yuuki/Downloads/tmp.txt");
fileWriter = new FileWriter("/Users/yuuki/Downloads/temp.txt");
//这里代表的是1M,因为Java中char类型占的是2字节
char[] chars = new char[512 * 1024];
int readCount = 0;
while ((readCount = fileReader.read(chars)) != -1) {
fileWriter.write(chars,0,readCount);
}
fileWriter.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fileReader != null) {
try {
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fileWriter != null) {
try {
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}