簡體   English   中英

物理傳輸速度Java IO

[英]Physical transfer speed Java IO

復制文件時是否有辦法查看傳輸速度(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;
}

如何做到這一點的一個例子? 親切的問候

一種。 首先,您可以在應用程序級別執行此操作。 復制文件的代碼應如下所示:

    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並在復制時獲得速度。 這種方法更好,因為您可以通過這種方法測量任何流的速度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM