1. 案例分析:
分析:
复制数据,如果我们知道用记事本打开并能够读懂,就用字符流,否则用字节流。
通过该原理,我们知道我们应该采用字符流更方便一些。
而字符流有5种方式,所以做这个题目我们有5种方式。推荐掌握第5种。
数据源:
c:\a.txt -- FileReader -- BufferdReader
目的地:
d:\b.txt -- FileWriter -- BufferedWriter
2. 复制文本文件的 5 种方式代码示例:
1 package cn.itcast_01; 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.FileReader; 6 import java.io.FileWriter; 7 import java.io.IOException; 8 9 /* 10 * 复制文本文件 11 * 12 * 分析: 13 * 复制数据,如果我们知道用记事本打开并能够读懂,就用字符流,否则用字节流。 14 * 通过该原理,我们知道我们应该采用字符流更方便一些。 15 * 而字符流有5种方式,所以做这个题目我们有5种方式。推荐掌握第5种。 16 * 数据源: 17 * c:\a.txt -- FileReader -- BufferdReader 18 * 目的地: 19 * d:\b.txt -- FileWriter -- BufferedWriter 20 */ 21 public class CopyFileDemo { 22 public static void main(String[] args) throws IOException { 23 String srcString = "c:\a.txt"; 24 String destString = "d:\b.txt"; 25 // method1(srcString, destString); 26 // method2(srcString, destString); 27 // method3(srcString, destString); 28 // method4(srcString, destString); 29 method5(srcString, destString); 30 } 31 32 // 字符缓冲流一次读写一个字符串 33 private static void method5(String srcString, String destString) 34 throws IOException { 35 BufferedReader br = new BufferedReader(new FileReader(srcString)); 36 BufferedWriter bw = new BufferedWriter(new FileWriter(destString)); 37 38 String line = null; 39 while ((line = br.readLine()) != null) { 40 bw.write(line); 41 bw.newLine(); 42 bw.flush(); 43 } 44 45 bw.close(); 46 br.close(); 47 } 48 49 // 字符缓冲流一次读写一个字符数组 50 private static void method4(String srcString, String destString) 51 throws IOException { 52 BufferedReader br = new BufferedReader(new FileReader(srcString)); 53 BufferedWriter bw = new BufferedWriter(new FileWriter(destString)); 54 55 char[] chs = new char[1024]; 56 int len = 0; 57 while ((len = br.read(chs)) != -1) { 58 bw.write(chs, 0, len); 59 } 60 61 bw.close(); 62 br.close(); 63 } 64 65 // 字符缓冲流一次读写一个字符 66 private static void method3(String srcString, String destString) 67 throws IOException { 68 BufferedReader br = new BufferedReader(new FileReader(srcString)); 69 BufferedWriter bw = new BufferedWriter(new FileWriter(destString)); 70 71 int ch = 0; 72 while ((ch = br.read()) != -1) { 73 bw.write(ch); 74 } 75 76 bw.close(); 77 br.close(); 78 } 79 80 // 基本字符流一次读写一个字符数组 81 private static void method2(String srcString, String destString) 82 throws IOException { 83 FileReader fr = new FileReader(srcString); 84 FileWriter fw = new FileWriter(destString); 85 86 char[] chs = new char[1024]; 87 int len = 0; 88 while ((len = fr.read(chs)) != -1) { 89 fw.write(chs, 0, len); 90 } 91 92 fw.close(); 93 fr.close(); 94 } 95 96 // 基本字符流一次读写一个字符 97 private static void method1(String srcString, String destString) 98 throws IOException { 99 FileReader fr = new FileReader(srcString); 100 FileWriter fw = new FileWriter(destString); 101 102 int ch = 0; 103 while ((ch = fr.read()) != -1) { 104 fw.write(ch); 105 } 106 107 fw.close(); 108 fr.close(); 109 } 110 }