黑马程序员---第一篇 IO字节流复制文件的方式

谁说胖子不能爱 提交于 2020-03-06 09:48:35

 

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------

      第一篇 IO字节流复制文件的方式

  今天是2015年11月9日,学习了IO流技术,学习了4种复制文件的方式。他们分别是:

1 基本字节流一次读写一个字节.

    2 基本字节流一次读写一个字节数组。

 3  高效字节流一次读写一个字节。

4  高效字节流一次读写一个字节数组。

 

那哪一种的效率会高一些呢?我们来做个对比,仔细观察哪种运行所需的时间最短。

 

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

 

/*

 * 需求:把e:\\大秦帝国.mp4复制到当前项目目录下的大秦帝国(2).mp4中

 *

 * 字节流四种方式复制文件:

 * 基本字节流一次读写一个字节:   * 基本字节流一次读写一个字节数组:

 * 高效字节流一次读写一个字节: * 高效字节流一次读写一个字节数组: */

public class CopyMp4Demo {

    public static void main(String[] args) throws IOException {

        long start = System.currentTimeMillis();

       

//下面把每一种方式都写成方法,方便以后使用。

method1("e:\\ 大秦帝国.mp4", "大秦帝国(2).mp4");

        method2("e:\\ 大秦帝国.mp4", "大秦帝国(2).mp4");

        method3("e:\\ 大秦帝国.mp4", "大秦帝国(2).mp4");

             method4("e:\\ 大秦帝国.mp4", "大秦帝国(2).mp4");

       

//这里加入一个获取当前的时间,是为了计算我这种方式的程序运行时间,用来对比这四种哪种更快

long end = System.currentTimeMillis();

        System.out.println("共耗时:" + (end - start) + "毫秒");

    }

 

    // 高效字节流一次读写一个字节数组:

    public static void method4(String srcString, String destString)

            throws IOException {

        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(

                srcString));

        BufferedOutputStream bos = new BufferedOutputStream(

                new FileOutputStream(destString));

 

        byte[] bys = new byte[1024];

        int len = 0;

        while ((len = bis.read(bys)) != -1) {

            bos.write(bys, 0, len);

        }

 

        bos.close();

        bis.close();

    }

 

    // 高效字节流一次读写一个字节:

    public static void method3(String srcString, String destString)

            throws IOException {

        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(

                srcString));

        BufferedOutputStream bos = new BufferedOutputStream(

                new FileOutputStream(destString));

 

        int by = 0;

        while ((by = bis.read()) != -1) {

            bos.write(by);

 

        }

 

        bos.close();

        bis.close();

    }

 

    // 基本字节流一次读写一个字节数组

    public static void method2(String srcString, String destString)

            throws IOException {

        FileInputStream fis = new FileInputStream(srcString);

        FileOutputStream fos = new FileOutputStream(destString);

 

        byte[] bys = new byte[1024];

        int len = 0;

        while ((len = fis.read(bys)) != -1) {

            fos.write(bys, 0, len);

        }

 

        fos.close();

        fis.close();

    }

 

    // 基本字节流一次读写一个字节

    public static void method1(String srcString, String destString)

            throws IOException {

        FileInputStream fis = new FileInputStream(srcString);

        FileOutputStream fos = new FileOutputStream(destString);

 

        int by = 0;

        while ((by = fis.read()) != -1) {

            fos.write(by);

        }

 

        fos.close();

        fis.close();

    }

}

 

总结:经过四种复制文件的方式的运行时间对比比较得出:

1 高效字节流要比基本字节流要快。

2 一次读取一个数组又比一次读取一个字节要快。

3 采用高效字节流每次获取一个字节数组的方式,效率最高。

4 另外要注意的地方,一定记得fos.close()和fis.close(),要及时的释放系统资源,但是我却好几次都忘记了。

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------

      第一篇 IO字节流复制文件的方式

  今天是2015年11月9日,学习了IO流技术,学习了4种复制文件的方式。他们分别是:

1 基本字节流一次读写一个字节.

    2 基本字节流一次读写一个字节数组。

 3  高效字节流一次读写一个字节。

4  高效字节流一次读写一个字节数组。

 

那哪一种的效率会高一些呢?我们来做个对比,仔细观察哪种运行所需的时间最短。

 

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

 

/*

 * 需求:把e:\\大秦帝国.mp4复制到当前项目目录下的大秦帝国(2).mp4中

 *

 * 字节流四种方式复制文件:

 * 基本字节流一次读写一个字节:   * 基本字节流一次读写一个字节数组:

 * 高效字节流一次读写一个字节: * 高效字节流一次读写一个字节数组: */

public class CopyMp4Demo {

    public static void main(String[] args) throws IOException {

        long start = System.currentTimeMillis();

       

//下面把每一种方式都写成方法,方便以后使用。

method1("e:\\ 大秦帝国.mp4", "大秦帝国(2).mp4");

        method2("e:\\ 大秦帝国.mp4", "大秦帝国(2).mp4");

        method3("e:\\ 大秦帝国.mp4", "大秦帝国(2).mp4");

             method4("e:\\ 大秦帝国.mp4", "大秦帝国(2).mp4");

       

//这里加入一个获取当前的时间,是为了计算我这种方式的程序运行时间,用来对比这四种哪种更快

long end = System.currentTimeMillis();

        System.out.println("共耗时:" + (end - start) + "毫秒");

    }

 

    // 高效字节流一次读写一个字节数组:

    public static void method4(String srcString, String destString)

            throws IOException {

        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(

                srcString));

        BufferedOutputStream bos = new BufferedOutputStream(

                new FileOutputStream(destString));

 

        byte[] bys = new byte[1024];

        int len = 0;

        while ((len = bis.read(bys)) != -1) {

            bos.write(bys, 0, len);

        }

 

        bos.close();

        bis.close();

    }

 

    // 高效字节流一次读写一个字节:

    public static void method3(String srcString, String destString)

            throws IOException {

        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(

                srcString));

        BufferedOutputStream bos = new BufferedOutputStream(

                new FileOutputStream(destString));

 

        int by = 0;

        while ((by = bis.read()) != -1) {

            bos.write(by);

 

        }

 

        bos.close();

        bis.close();

    }

 

    // 基本字节流一次读写一个字节数组

    public static void method2(String srcString, String destString)

            throws IOException {

        FileInputStream fis = new FileInputStream(srcString);

        FileOutputStream fos = new FileOutputStream(destString);

 

        byte[] bys = new byte[1024];

        int len = 0;

        while ((len = fis.read(bys)) != -1) {

            fos.write(bys, 0, len);

        }

 

        fos.close();

        fis.close();

    }

 

    // 基本字节流一次读写一个字节

    public static void method1(String srcString, String destString)

            throws IOException {

        FileInputStream fis = new FileInputStream(srcString);

        FileOutputStream fos = new FileOutputStream(destString);

 

        int by = 0;

        while ((by = fis.read()) != -1) {

            fos.write(by);

        }

 

        fos.close();

        fis.close();

    }

}

 

总结:经过四种复制文件的方式的运行时间对比比较得出:

1 高效字节流要比基本字节流要快。

2 一次读取一个数组又比一次读取一个字节要快。

3 采用高效字节流每次获取一个字节数组的方式,效率最高。

4 另外要注意的地方,一定记得fos.close()和fis.close(),要及时的释放系统资源,但是我却好几次都忘记了。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!