2011-05-03 81 views
8

我有一個簡單的FTPClient類,用於從FTP服務器下載文件。我也需要監視下載的進度,但我沒有看到如何。實際下載文件功能是使用Apache Commons監視進度FTPClient

(your ftp client name).retrieveFile(arg1,arg2);

簡單的功能如何監控下載進度?

謝謝, 匿名。

+0

你需要相當於他們的「散列」功能 - 不知道它是什麼。 – duffymo 2011-05-03 21:21:40

+0

我沒有讀過關於copyStreamAdapter的一些信息,但我不知道有關它的任何細節。 – 2011-05-03 21:49:17

回答

18

您需要一個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程序),但這些都是特定於應用程序的細節。

+1

我可以看一個例子嗎? – 2011-05-03 22:04:23