先简单说明一下,文本文件与后缀无关,不论是“.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();}}}}}