字符流读写方式速度对比

学习java IO模块写的一个测试用例

Demo中有4个方法,在main方法中分别调用即可

在测试前请替换 源文件目录目标文件目录

package com.IOstream;

import java.io.*;

/**
 * 字节流Demo 四种复制文件方式速度对比
 * 方式1:字节流每次读取一个字节
 * 方式2:字节流每次读取一个字节数组
 * 方式3:字节缓冲流每次读取一个字节
 * 方式2:字节缓冲流每次读取一个字节数组
 *
 */
package com.IOstream;

import java.io.*;

/**
 * 字节流Demo 四种复制文件方式速度对比
 * 方式1:字节流每次读取一个字节
 * 方式2:字节流每次读取一个字节数组
 * 方式3:字节缓冲流每次读取一个字节
 * 方式2:字节缓冲流每次读取一个字节数组
 */
public class IODemo02 {
    static final String filePath1 = "源文件路径";
    static final String filePath2 = "目标文件路径";

    public static void main(String[] args) throws IOException {
        // 记录开始时间
        long startTime = System.currentTimeMillis();

        //copyFlies1(); 耗时 134931毫秒
        //copyFlies2(); 耗时 205毫秒
        //copyFlies3(); 耗时 346毫秒
        //copyFlies4(); 耗时 47毫秒

        // 记录结束时间
        long endTime = System.currentTimeMillis();
        System.out.println("共耗时:" + (endTime - startTime) + "毫秒");

    }

    private static void copyFlies1() throws IOException {
        FileInputStream fis = new FileInputStream(filePath1);
        FileOutputStream fos = new FileOutputStream(filePath2);

        int b;
        while ((b = fis.read()) != -1) {
            fos.write(b);
        }

        // 关闭字节流,释放系统资源
        fis.close();
        fos.close();
    }

    private static void copyFlies2() throws IOException {
        FileInputStream fis = new FileInputStream(filePath1);
        FileOutputStream fos = new FileOutputStream(filePath2);

        byte[] bytes = new byte[1024];
        int len;
        while ((len = fis.read(bytes)) != -1) {
            fos.write(bytes, 0, len);
        }
        // 关闭字节流,释放系统资源
        fis.close();
        fos.close();
    }

    private static void copyFlies3() throws IOException {
        FileInputStream fis = new FileInputStream(filePath1);
        BufferedInputStream fbis = new BufferedInputStream(fis);

        FileOutputStream fos = new FileOutputStream(filePath2);
        BufferedOutputStream fbos = new BufferedOutputStream(fos);

        int b;
        while ((b = fbis.read()) != -1) {
            fbos.write(b);
        }

        // 关闭字节缓冲流和字节流,释放系统资源
        fbis.close();
        fbos.close();
        fis.close();
        fos.close();
    }

    private static void copyFlies4() throws IOException {
        FileInputStream fis = new FileInputStream(filePath1);
        BufferedInputStream fbis = new BufferedInputStream(fis);

        FileOutputStream fos = new FileOutputStream(filePath2);
        BufferedOutputStream fbos = new BufferedOutputStream(fos);

        byte[] bytes = new byte[1024];
        int len;
        while ((len = fbis.read(bytes)) != -1) {
            fbos.write(bytes, 0, len);
        }
        // 关闭字节流,释放系统资源
        fis.close();
        fos.close();
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章