Java 字节流数据拷贝性能测试

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
package cn.edu.lcudcc.byte_buffer_time;
 
import java.io.*;
 
public class ByteBufferTimeDemo {
    private static final String SRC_FILE = "/Users/baoshan/Downloads/线上教学截图/meeting_01.mp4";
    private static final String DEST_FILE = "/Users/baoshan/Downloads/";
 
    public static void main(String[] args) {
//        copy01(); // 低级 字节流复制
        copy02(); // 低级 字节数组流复制
//        copy03(); // 缓冲 字节流复制
        copy04(); // 缓冲 字节数组流复制  效率高,优先使用
    }
 
    private static void copy01() {
        long startTime = System.currentTimeMillis();
        try{
            InputStream is = new FileInputStream(SRC_FILE);
            OutputStream os = new FileOutputStream(DEST_FILE+"video1.mp4");
 
            int b;
            while ((b = is.read()) != -1) {
               os.write(b);
            }
            os.flush();
            os.close();
            is.close();
        }
        catch (Exception e){
            e.printStackTrace();
        }
        long endTime = System.currentTimeMillis();
        System.out.println("使用低级的字节流按照一个一个字节的形式复制文件耗时:" + (endTime - startTime) / 1000.0 + "s");
    }
 
    private static void copy02() {
        long startTime = System.currentTimeMillis();
        try {
            InputStream is = new FileInputStream(SRC_FILE);
            OutputStream os = new FileOutputStream(DEST_FILE + "video2.mp4");
            byte[] buffer = new byte[1024];
            int len;
            while ((len = is.read(buffer)) != -1){
                os.write(buffer, 0, len);
            }
            os.flush();
            os.close();
            is.close();
        }
        catch (Exception e){
            e.printStackTrace();
        }
        long endTime = System.currentTimeMillis();
        System.out.println("使用低级的字节流数组按照一个一个字节的形式复制文件耗时:" + (endTime - startTime) / 1000.0 + "s");
    }
 
    private static void copy03() {
        long startTime = System.currentTimeMillis();
        try{
            InputStream is = new FileInputStream(SRC_FILE);
            BufferedInputStream bis = new BufferedInputStream(is);
            OutputStream os = new FileOutputStream(DEST_FILE+"video3.mp4");
            BufferedOutputStream bos = new BufferedOutputStream(os);
 
            int b;
            while ((b = bis.read()) != -1) {
                bos.write(b);
            }
            bos.flush();
            bos.close();
            bis.close();
            os.close();
            is.close();
        }
        catch (Exception e){
            e.printStackTrace();
        }
        long endTime = System.currentTimeMillis();
        System.out.println("使用缓冲的字节流按照一个一个字节的形式复制文件耗时:" + (endTime - startTime) / 1000.0 + "s");
    }
 
    private static void copy04() {
        long startTime = System.currentTimeMillis();
        try {
            InputStream is = new FileInputStream(SRC_FILE);
            BufferedInputStream bis = new BufferedInputStream(is);
            OutputStream os = new FileOutputStream(DEST_FILE+"video4.mp4");
            BufferedOutputStream bos = new BufferedOutputStream(os);
 
            byte[] buffer = new byte[1024];
            int len;
            while ((len = bis.read(buffer)) != -1){
                bos.write(buffer, 0, len);
            }
            bos.flush();
            bos.close();
            bis.close();
            os.close();
            is.close();
        }
        catch (Exception e){
            e.printStackTrace();
        }
        long endTime = System.currentTimeMillis();
        System.out.println("使用缓冲的字节流数组按照一个一个字节的形式复制文件耗时:" + (endTime - startTime) / 1000.0 + "s");
    }
 
}

  

结论:高级缓冲字节数组流复制,效率最高,优先使用。

 

posted @   宝山方圆  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示