0

复制文件时有没有办法查看传输速度(MB/s)?这不是用于网络套接字,而是用于例如 hdd 到 hdd。我以字节为单位复制文件内容。复制文件的代码:平台是windows

while ((length = in.read(buffer)) > 0) {
    out.write(buffer, 0, length);
    totalBytesCopied += length;
    int totalKilos = (int) totalBytesCopied / 1024;
    int totalMegas = totalKilos / 1024;
}

一个如何做到这一点的例子?亲切的问候

4

1 回答 1

4

一种。首先,您可以在应用程序级别执行此操作。您复制文件的代码应如下所示:

    byte[] buffer = new byte[BUFFER_SIZE];
    int n = 0;
    while (-1 != (n = input.read(buffer))) {
        output.write(buffer, 0, n);
    }

所以,修改如下:

    byte[] buffer = new byte[BUFFER_SIZE];
    int n = 0;
    long before = System.currentTimeMillis();
    while (-1 != (n = input.read(buffer))) {
        output.write(buffer, 0, n);
        long after = System.currentTimeMillis();
        double speed = n / (after - before) * 1000; // speed in byte per second 
        before = System.currentTimeMillis();
    }

你可以做得更好。实现SpeedMeasurementOutputStream包装任何输出流并在其write()方法中执行类似的逻辑。然后使用此流进行包装FileOutputStream并在复制时获得速度。这种方法更好,因为这样您可以测量任何流的速度。

于 2013-05-23T15:44:44.057 回答