黑马程序员技术交流社区

标题: IO九种复制方法 [打印本页]

作者: 王贺明    时间: 2015-10-8 00:40
标题: IO九种复制方法
  1. package cn.itcast.day21;

  2. import java.io.BufferedInputStream;
  3. import java.io.BufferedOutputStream;
  4. import java.io.BufferedReader;
  5. import java.io.BufferedWriter;
  6. import java.io.FileInputStream;
  7. import java.io.FileOutputStream;
  8. import java.io.FileReader;
  9. import java.io.FileWriter;
  10. import java.io.IOException;

  11. /*
  12. * 九种复制方法
  13. */
  14. public class Demo_nine_Copy {



  15.         public static void main(String[] args) throws IOException {
  16.                 long currentTimeMillis = System.currentTimeMillis();
  17.                 method1();
  18.                 long currentTimeMillis2 = System.currentTimeMillis();
  19.                 method2();
  20.                 long currentTimeMillis3 = System.currentTimeMillis();
  21.                 method3();
  22.                 long currentTimeMillis4 = System.currentTimeMillis();
  23.                 method4();
  24.                 long currentTimeMillis5 = System.currentTimeMillis();
  25.                 method5();
  26.                 long currentTimeMillis6 = System.currentTimeMillis();
  27.                 method6();
  28.                 long currentTimeMillis7 = System.currentTimeMillis();
  29.                 method7();
  30.                 long currentTimeMillis8 = System.currentTimeMillis();
  31.                 method8();
  32.                 long currentTimeMillis9 = System.currentTimeMillis();
  33.                 method9();
  34.                 long currentTimeMillis10 = System.currentTimeMillis();
  35.                 System.out.println("普通字节流  一次一个字节:      "+(currentTimeMillis2-currentTimeMillis));
  36.                 System.out.println("普通字节流  一次一个字节数组:  "+(currentTimeMillis3-currentTimeMillis2));
  37.                 System.out.println("高效字节流  一次一个字节:      "+(currentTimeMillis4-currentTimeMillis3));
  38.                 System.out.println("高效字节流  一次一个字节数组:  "+(currentTimeMillis5-currentTimeMillis4));
  39.                 System.out.println("普通字符流  一次一个字符:      "+(currentTimeMillis6-currentTimeMillis5));
  40.                 System.out.println("普通字符流  一次一个字符数组:  "+(currentTimeMillis7-currentTimeMillis6));
  41.                 System.out.println("高效字节流  一次一个字符数组:  "+(currentTimeMillis8-currentTimeMillis7));
  42.                 System.out.println("高效字节流  一次一个字符:     "+(currentTimeMillis9-currentTimeMillis8));
  43.                 System.out.println("高效字节流  一次一行:         "+(currentTimeMillis10-currentTimeMillis9));
  44.                
  45.         }
  46.         //普通字节流  一次一个字节
  47.         public static void method1() throws IOException{
  48.                 FileInputStream fis = new FileInputStream("c.txt");
  49.                 FileOutputStream fos = new FileOutputStream("d.txt");
  50.                
  51.                 int b=0;
  52.                 while((b=fis.read())!=-1){
  53.                         fos.write(b);
  54.                 }
  55.                 fos.close();
  56.                 fis.close();
  57.         }
  58.         //普通字节流  一次一个字节数组
  59.         public static void method2() throws IOException{
  60.                 FileInputStream fis = new FileInputStream("c.txt");
  61.                 FileOutputStream fos = new FileOutputStream("d.txt");
  62.                
  63.                 int len=0;
  64.                 byte[] bytes = new byte[1024];
  65.                 while((len=fis.read(bytes))!=-1){
  66.                         fos.write(bytes,0,len);
  67.                 }
  68.                 fos.close();
  69.                 fis.close();
  70.         }
  71.         //高效字节流  一次一个字节
  72.         public static void method3() throws IOException{
  73.                 FileInputStream fis = new FileInputStream("c.txt");
  74.                 FileOutputStream fos = new FileOutputStream("d.txt");
  75.                 BufferedInputStream bis = new BufferedInputStream(fis);
  76.                 BufferedOutputStream bos = new BufferedOutputStream(fos);
  77.                 int b=0;
  78.                 while((b=bis.read())!=-1){
  79.                         bos.write(b);
  80.                 }
  81.                 bos.close();
  82.                 bis.close();
  83.         }
  84.         //高效字节流  一次一个字节数组
  85.         public static void method4() throws IOException{
  86.                 FileInputStream fis = new FileInputStream("c.txt");
  87.                 FileOutputStream fos = new FileOutputStream("d.txt");
  88.                 BufferedInputStream bis = new BufferedInputStream(fis);
  89.                 BufferedOutputStream bos = new BufferedOutputStream(fos);
  90.                 int len=0;
  91.                 byte[] bytes = new byte[1024];
  92.                 while((len=bis.read(bytes))!=-1){
  93.                         bos.write(bytes,0,len);
  94.                 }
  95.                 bos.close();
  96.                 bis.close();
  97.         }
  98.         //普通字符流  一次一个字符
  99.                 public static void method5() throws IOException{
  100.                         FileReader fis = new FileReader("c.txt");
  101.                         FileWriter fos = new FileWriter("d.txt");
  102.                        
  103.                         int b=0;
  104.                         while((b=fis.read())!=-1){
  105.                                 fos.write(b);
  106.                         }
  107.                         fos.close();
  108.                         fis.close();
  109.                 }
  110.                 //普通字符流  一次一个字符数组
  111.                 public static void method6() throws IOException{
  112.                         FileReader fis = new FileReader("c.txt");
  113.                         FileWriter fos = new FileWriter("d.txt");
  114.                        
  115.                         int len = 0;
  116.                         char[] bytes = new char[1024];
  117.                         while((len=fis.read(bytes))!=-1){
  118.                                 fos.write(bytes,0,len);
  119.                         }
  120.                         fos.close();
  121.                         fis.close();
  122.                 }
  123.                 //高效字符流  一次一个字符数组
  124.                 public static void method7() throws IOException{
  125.                         FileReader fis = new FileReader("c.txt");
  126.                         FileWriter fos = new FileWriter("d.txt");
  127.                         BufferedReader br = new BufferedReader(fis);
  128.                         BufferedWriter bw = new BufferedWriter(fos);
  129.                         int len = 0;
  130.                         char[] bytes = new char[1024];
  131.                         while((len=br.read(bytes))!=-1){
  132.                                 bw.write(bytes,0,len);
  133.                         }
  134.                         bw.close();
  135.                         br.close();
  136.                 }
  137.                 //高效字符流  一次一个字符
  138.                 public static void method8() throws IOException{
  139.                         FileReader fis = new FileReader("c.txt");
  140.                         FileWriter fos = new FileWriter("d.txt");
  141.                         BufferedReader br = new BufferedReader(fis);
  142.                         BufferedWriter bw = new BufferedWriter(fos);
  143.                         int b = 0;
  144.                        
  145.                         while((b=br.read())!=-1){
  146.                                 bw.write(b);
  147.                         }
  148.                         bw.close();
  149.                         br.close();
  150.                 }
  151.                 //高效字符流  一次一行
  152.                 public static void method9() throws IOException{
  153.                         FileReader fis = new FileReader("c.txt");
  154.                         FileWriter fos = new FileWriter("d.txt");
  155.                         BufferedReader br = new BufferedReader(fis);
  156.                         BufferedWriter bw = new BufferedWriter(fos);
  157.                         String str;
  158.                         while((str=br.readLine())!=null){
  159.                                 bw.write(str);
  160.                                 bw.newLine();
  161.                         }
  162.                         bw.close();
  163.                         br.close();
  164.                 }
  165. }
复制代码

作者: ksh    时间: 2015-10-8 07:08
学习了,,,条理清楚,,

作者: fwqk123    时间: 2015-10-8 10:32
每种方法具体用途是什么呢  困惑啊
作者: itheima_casper    时间: 2015-10-8 13:31
搞个大文件试试效果
作者: itheima_casper    时间: 2015-10-8 13:47
30M文件的效果:
普通字节流  一次一个字节:      271968
普通字节流  一次一个字节数组:  342
高效字节流  一次一个字节:      1554
高效字节流  一次一个字节数组:  113
普通字符流  一次一个字符:      2699
普通字符流  一次一个字符数组:  409
高效字符流  一次一个字符数组:  435
高效字符流  一次一个字符:     1835
高效字符流  一次一行:         537
结果是:字节+数组+buffered 最高效




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