我有一個簡單的FTPClient類,用於從FTP服務器下載文件。我也需要監視下載的進度,但我沒有看到如何。實際下載文件功能是使用Apache Commons監視進度FTPClient
(your ftp client name).retrieveFile(arg1,arg2);
簡單的功能如何監控下載進度?
謝謝, 匿名。
我有一個簡單的FTPClient類,用於從FTP服務器下載文件。我也需要監視下載的進度,但我沒有看到如何。實際下載文件功能是使用Apache Commons監視進度FTPClient
(your ftp client name).retrieveFile(arg1,arg2);
簡單的功能如何監控下載進度?
謝謝, 匿名。
您需要一個CountingOutputStream(如Commons IO上所示:http://commons.apache.org/io/api-release/index.html)。創建其中的一個,包你的目的地的OutputStream中,然後就可以檢查需要監視下載進度BYTECOUNT ..
編輯:你會做這樣的事情:
int size;
String remote, local;
// do some work to initialize size, remote and local file path
// before saving remoteSource to local
OutputStream output = new FileOutputStream(local);
CountingOutputStream cos = new CountingOutputStream(output){
protected void beforeWrite(int n){
super.beforeWrite(n);
System.err.println("Downloaded "+getCount() + "/" + size);
}
};
ftp.retrieveFile(remote, cos);
output.close();
如果你的程序是多線程的,你可能想用一個單獨的線程來監視進程(例如,用於一個GUI程序),但這些都是特定於應用程序的細節。
我可以看一個例子嗎? – 2011-05-03 22:04:23
你需要相當於他們的「散列」功能 - 不知道它是什麼。 – duffymo 2011-05-03 21:21:40
我沒有讀過關於copyStreamAdapter的一些信息,但我不知道有關它的任何細節。 – 2011-05-03 21:49:17