?? downloadmonitor.java
字號:
package connex.plugins.filesharing;
import java.io.File;
import connex.plugins.filesharing.model.DownloadRow;
import connex.plugins.filesharing.ui.DownloadPanel;
public class DownloadMonitor
extends Thread {
private boolean b = true;
private File dfile;
private DownloadRow myRow;
private long numMeasures = 0;
private long averageBandwidth = 0;
private long lastTime;
private long lastAmountRead;
private long measuredBandwidth;
private long orgLength;
public DownloadMonitor(DownloadRow myRow, File file, long length) {
this.dfile = file;
this.orgLength = length;
this.myRow = myRow;
}
public void stopit() {
b = false;
}
public void run() {
String downloaded;
String percent;
long ge;
long rest;
while (b) {
try {
Thread.sleep(700);
}
catch (Exception e) {
}
synchronized (dfile) {
ge = measureBandwidth(dfile.length());
downloaded = fileSize(dfile.length()) +
"KB / " + fileSize(orgLength) + " KB";
percent = getPercent(orgLength, dfile.length());
if (ge > 0) {
rest = (orgLength - dfile.length()) / ge;
}
else {
rest = -1;
}
myRow.UpdateData(ge + " KBps", downloaded, percent, this.restTime(rest));
if (dfile.length() == orgLength) {
b = false;
}
}
}
}
private String getPercent(long org, long down) {
long i = ( (down * 100) / org);
return i + "";
}
private String restTime(long t) {
if (t == -1) {
return "Waiting";
}
t /= 1000;
String rest = t + " sec";
if ( (t >= 60) && (t < 3600)) {
rest = (t / 60) + " min ";
long sec = t % 60;
rest += sec + " sec";
}
if (t >= 3600) {
rest = (t / 3600) + " h ";
long min = t % 3600;
rest += (min / 60) + " min ";
long sec = min % 60;
rest += sec + " sec";
}
return rest;
}
private long fileSize(long size) {
size /= 1024;
return size;
}
public long measureBandwidth(long amountRead) {
long currentTime = System.currentTimeMillis();
if (lastAmountRead == 0 || currentTime == lastTime) {
measuredBandwidth = 0;
}
else {
measuredBandwidth = (long) (amountRead - lastAmountRead)
/ (long) (currentTime - lastTime);
//Ensure positive!
measuredBandwidth = Math.max(measuredBandwidth, 0);
}
lastTime = currentTime;
lastAmountRead = amountRead;
averageBandwidth = (averageBandwidth * numMeasures +
measuredBandwidth)
/ ++numMeasures;
// return measuredBandwidth;
return averageBandwidth;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -