Java IO流之【缓冲流和文件流复制文件对比】

来源:互联网 发布:淘宝脏辫接发视频教程 编辑:程序博客网 时间:2024/06/06 04:00

与文件流相比,缓冲流复制文件更快

代码:

package Homework;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.text.SimpleDateFormat;/** * 1 )将"今年是反法西斯胜利70周年,举国欢庆,所以要放假啦" 字符串 * 使用文件字符输出流 写入到oldhappy.dt文件中,复写10000行, * 要求换行 在文件的开头写入当前的时间 精确到毫秒在文件的结尾也写入当前的时间 精确到毫秒。 * @author Administrator * */public class Test1 {    public static void main(String[] args) {        copy1();        copy2();    }    //使用文件流复制文件    public static void copy1(){        FileOutputStream fos=null;        try {            //创建输入流,并创建要写入的文件oldhappy.dt            fos=new FileOutputStream(new File("oldhapy.dt"));            //获取写入前的当前时间            long l=System.currentTimeMillis();            //格式化时间            SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");            String time=s.format(l);            //写入时间            fos.write((time+"\r\n").getBytes());            //写入要写的内容,并换行             //   \r\n表示换行            for(int i=1;i<=10000;i++){                fos.write("今年是反法西斯胜利70周年,举国欢庆,所以要放假啦\r\n".getBytes());                fos.flush();            }            //获取写完后 时间            long l2=System.currentTimeMillis();            String time2=s.format(l2);            fos.write(time2.getBytes());            //复制文件的时间            System.out.println("使用文件流复制文件时间:"+(l2-l));        } catch (FileNotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally {            if(fos!=null){                try {                    fos.close();                } catch (IOException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }        }    }    //使用缓冲流复制文件    public static void copy2(){        BufferedOutputStream bos=null;        try {            bos=new BufferedOutputStream(new FileOutputStream("newhapy.dt"));            long l=System.currentTimeMillis();            //格式化时间            SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");            String time=s.format(l);            //写入时间            bos.write((time+"\r\n").getBytes());            //写入要写的内容,并换行             //   \r\n表示换行            for(int i=1;i<=10000;i++){                bos.write("今年是反法西斯胜利70周年,举国欢庆,所以要放假啦\r\n".getBytes());                bos.flush();            }            //获取写完后 时间            long l2=System.currentTimeMillis();            String time2=s.format(l2);            bos.write(time2.getBytes());            //复制文件的时间            System.out.println("使用缓冲流复制文件时间:"+(l2-l));        } catch (FileNotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally {            if(bos!=null){                try {                    bos.close();                } catch (IOException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }        }    }}

运行结果比较:

这里写图片描述

0 0