黑马程序员技术交流社区

标题: 自己总结的IO流复制文本文件的5种方式!!! [打印本页]

作者: abc784990536    时间: 2015-1-8 11:32
标题: 自己总结的IO流复制文本文件的5种方式!!!

自己总结的IO流复制文本文件的5种方式!!!
  1. package IO;

  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.FileReader;
  5. import java.io.FileWriter;
  6. import java.io.IOException;

  7. /*
  8. * 复制文本文件
  9. *
  10. * 分析:
  11. *                 复制数据,如果我们知道用记事本打开并能够读懂,就用字符流,否则用字节流。
  12. *                 通过该原理,我们知道我们应该采用字符流更方便一些。
  13. *                 而字符流有5种方式,所以做这个题目我们有5种方式。推荐掌握第5种。
  14. * 数据源:
  15. *                 c:\\a.txt -- FileReader -- BufferdReader
  16. * 目的地:
  17. *                 d:\\b.txt -- FileWriter -- BufferedWriter
  18. */
  19. public class CopyFileDemo {
  20.         public static void main(String[] args) throws IOException {
  21.                 String srcString = "c:\\a.txt";
  22.                 String destString = "d:\\b.txt";
  23.                 // method1(srcString, destString);
  24.                 // method2(srcString, destString);
  25.                 // method3(srcString, destString);
  26.                 // method4(srcString, destString);
  27.                 method5(srcString, destString);
  28.         }

  29.         // 字符缓冲流一次读写一个字符串
  30.         private static void method5(String srcString, String destString)
  31.                         throws IOException {
  32.                 BufferedReader br = new BufferedReader(new FileReader(srcString));
  33.                 BufferedWriter bw = new BufferedWriter(new FileWriter(destString));

  34.                 String line = null;
  35.                 while ((line = br.readLine()) != null) {
  36.                         bw.write(line);
  37.                         bw.newLine();
  38.                         bw.flush();
  39.                 }

  40.                 bw.close();
  41.                 br.close();
  42.         }

  43.         // 字符缓冲流一次读写一个字符数组
  44.         private static void method4(String srcString, String destString)
  45.                         throws IOException {
  46.                 BufferedReader br = new BufferedReader(new FileReader(srcString));
  47.                 BufferedWriter bw = new BufferedWriter(new FileWriter(destString));

  48.                 char[] chs = new char[1024];
  49.                 int len = 0;
  50.                 while ((len = br.read(chs)) != -1) {
  51.                         bw.write(chs, 0, len);
  52.                 }

  53.                 bw.close();
  54.                 br.close();
  55.         }

  56.         // 字符缓冲流一次读写一个字符
  57.         private static void method3(String srcString, String destString)
  58.                         throws IOException {
  59.                 BufferedReader br = new BufferedReader(new FileReader(srcString));
  60.                 BufferedWriter bw = new BufferedWriter(new FileWriter(destString));

  61.                 int ch = 0;
  62.                 while ((ch = br.read()) != -1) {
  63.                         bw.write(ch);
  64.                 }

  65.                 bw.close();
  66.                 br.close();
  67.         }

  68.         // 基本字符流一次读写一个字符数组
  69.         private static void method2(String srcString, String destString)
  70.                         throws IOException {
  71.                 FileReader fr = new FileReader(srcString);
  72.                 FileWriter fw = new FileWriter(destString);

  73.                 char[] chs = new char[1024];
  74.                 int len = 0;
  75.                 while ((len = fr.read(chs)) != -1) {
  76.                         fw.write(chs, 0, len);
  77.                 }

  78.                 fw.close();
  79.                 fr.close();
  80.         }

  81.         // 基本字符流一次读写一个字符
  82.         private static void method1(String srcString, String destString)
  83.                         throws IOException {
  84.                 FileReader fr = new FileReader(srcString);
  85.                 FileWriter fw = new FileWriter(destString);

  86.                 int ch = 0;
  87.                 while ((ch = fr.read()) != -1) {
  88.                         fw.write(ch);
  89.                 }

  90.                 fw.close();
  91.                 fr.close();
  92.         }
  93. }
复制代码




作者: Death、    时间: 2015-1-8 12:42
好,感谢分享
作者: bjuth    时间: 2015-1-8 12:51
赞一个!:)
作者: bin393973282    时间: 2015-1-8 19:36
赞一个,总结的很好。
作者: suihs11    时间: 2015-1-8 20:14
感谢分享,赞
作者: 彭学伟    时间: 2015-1-8 20:24
感谢分享




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2