[英]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.