黑马程序员技术交流社区

标题: 字符流效率的对比案例 [打印本页]

作者: 劉芒    时间: 2016-8-22 22:13
标题: 字符流效率的对比案例
package cn.itcast.demo04_zifuliuduibi;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;

/*
* 字符流的对比案例:
*                 字符缓冲流的构造方法:
*                         public BufferedWriter(Writer out)创建一个使用默认大小输出缓冲区的缓冲字符输出流。
*                         public BufferedReader(Reader in)创建一个使用默认大小输入缓冲区的缓冲字符输入流。
*
*        1、使用字符流一次读一个字符的方式,复制文本文件                //第1种方法复制共用时59235秒
*        2、使用字符流一次读一个字符数组的方式,复制文本文件        //第2种方法复制共用时276秒
*        3、使用字符缓冲流一次读一个字符的方式,复制文本文件        //第3种方法复制共用时63261秒       
*        4、使用字符缓冲流一次读字符数组的方式,复制文本文件        //第4种方法复制共用时341秒
*
*                System.currentTimeMillis()
*/
public class ZIFuLiuDuiBiDemo {

        public static void main(String[] args) throws IOException {
                // m1();
                // m2();
                //m3();
                m4();
        }

        // 1、使用字符流一次读一个字符的方式,复制文本文件
        private static void m1() throws IOException {
                FileReader re = new FileReader("源文件路径");
                FileWriter wr = new FileWriter("目标文件路径");
                long t1 = System.currentTimeMillis();
                int i = -1;
                while ((i = re.read()) != -1) {
                        wr.write(i);
                        wr.flush();
                }
                long t2 = System.currentTimeMillis();
                System.out.println("第1种方法复制共用时" + (t2 - t1) + "秒");
                wr.close();
                re.close();
        }

        // 2、使用字符流一次读一个字符数组的方式,复制文本文件
        private static void m2() throws IOException {
                FileReader re = new FileReader("源文件路径");
                FileWriter wr = new FileWriter("C:\\Users\\LQF\\Desktop\\123\\2-2.txt");
                long t1 = System.currentTimeMillis();
                int i = -1;
                char[] c = new char[1024];
                while ((i = re.read(c)) != -1) {
                        wr.write(c, 0, i);
                        wr.flush();
                }
                long t2 = System.currentTimeMillis();
                System.out.println("第2种方法复制共用时" + (t2 - t1) + "秒");
                wr.close();
                re.close();
        }

        // 3、使用字符缓冲流一次读一个字符的方式,复制文本文件
        // BufferedWriter(Writer out)
        // BufferedReader(Reader in)
        public static void m3() throws IOException {
                Reader in = new FileReader("源文件路径");
                Writer out = new FileWriter("C:\\Users\\LQF\\Desktop\\123\\2-3.txt");
                BufferedReader bin = new BufferedReader(in);
                BufferedWriter bout = new BufferedWriter(out);
                long t1 = System.currentTimeMillis();
                int i = -1;
                while ((i = bin.read()) != -1) {
                        bout.write(i);
                        bout.flush();
                }
                long t2 = System.currentTimeMillis();
                System.out.println("第3种方法复制共用时" + (t2 - t1) + "秒");
                bout.close();
                bin.close();
        }

        // 4、使用字符缓冲流一次读字符数组的方式,复制文本文件
        // BufferedWriter(Writer out)
        // BufferedReader(Reader in)
        public static void m4() throws IOException {
                Reader in = new FileReader("源文件路径");
                Writer out = new FileWriter("C:\\Users\\LQF\\Desktop\\123\\2-4.txt");
                BufferedReader bin = new BufferedReader(in);
                BufferedWriter bout = new BufferedWriter(out);
                long t1 = System.currentTimeMillis();
                int i = -1;
                char[] c = new char[1024];
                while ((i = bin.read(c)) != -1) {
                        bout.write(c, 0, i);
                        bout.flush();
                }
                long t2 = System.currentTimeMillis();
                System.out.println("第4种方法复制共用时" + (t2 - t1) + "秒");
                bout.close();
                bin.close();
        }
}





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