需求:复制文本文件
分析:
由于文本文件我们用记事本打开后可以读懂,所以使用字符流。
而字符流有5种复制的方式:
首先写main方法
1 public static void main(String[] args) throws IOException { 2 // 数据源 3 String startfile = "C:\\Users\\Administrator\\Desktop\\新建文件夹\\start.txt"; 4 // 目的地 5 String endfile = "C:\\Users\\Administrator\\Desktop\\新建文件夹\\end.txt"; 6 7 //method1(startfile,endfile); 8 //method2(startfile,endfile); 9 //method3(startfile,endfile); 10 //method4(startfile,endfile); 11 method5(startfile,endfile); 12 13 }
第一种方式:基本字符流一次读取一个字符
1 private static void method1(String startfile,String endfile) throws IOException { 2 // 基本字符流一次读写一个字符 3 //封装数据源 4 FileReader fr = new FileReader(startfile); 5 //封装目的地 6 FileWriter fw = new FileWriter(endfile); 7 8 //一次读写一个字符 9 int ch = 0; 10 while((ch = fr.read()) != -1){ 11 fw.write(ch); 12 } 13 //释放资源 14 fr.close(); 15 fw.close(); 16 }
第二种方式:基本字符流一次读取一个字符数组
1 private static void method2(String startfile, String endfile) throws IOException { 2 // 基本字符流一次读写一个字符数组 3 FileReader fr = new FileReader(startfile); 4 FileWriter fw = new FileWriter(endfile); 5 6 char[] ch = new char[1024]; 7 int len = 0; 8 while((len = fr.read(ch)) != -1){ 9 fw.write(ch,0,len);//这里需要注意 10 } 11 fr.close(); 12 fw.close(); 13 }
第三种方式:缓冲字符流一次读取一个字符
1 private static void method3(String startfile, String endfile) throws IOException{ 2 // 字符缓冲流一次读取一个字符 3 BufferedReader br = new BufferedReader(new FileReader(startfile)); 4 BufferedWriter bw = new BufferedWriter(new FileWriter(endfile)); 5 int ch = 0; 6 while((ch = br.read()) != -1){ 7 bw.write(ch); 8 } 9 br.close(); 10 bw.close(); 11 12 }
第四种方式:缓冲字符流一次读取一个字符数组
1 private static void method4(String startfile, String endfile) throws IOException { 2 // 字符缓冲流一次读取一个字符数组 3 BufferedWriter bw = new BufferedWriter(new FileWriter(endfile)); 4 BufferedReader br = new BufferedReader(new FileReader(startfile)); 5 char[] ch = new char[1024]; 6 int len = 0; 7 while((len = br.read(ch)) != -1){ 8 bw.write(ch,0,len); 9 } 10 br.close(); 11 bw.close(); 12 13 }
第五种方式:缓冲字符流一次读取一个字符串(熟练掌握)
private static void method5(String startfile, String endfile) throws IOException { // 字符缓冲流一次读取一个字符串 BufferedReader br = new BufferedReader(new FileReader(startfile)); BufferedWriter bw = new BufferedWriter(new FileWriter(endfile)); String line = null; while((line = br.readLine()) != null){ bw.write(line); bw.newLine(); } br.close(); bw.close(); }