Bạn cần một CountingOutputStream (như được thấy trên Commons IO: http://commons.apache.org/io/api-release/index.html). Bạn tạo một trong những, quấn OutputStream điểm đến của bạn trong nó, và sau đó bạn có thể kiểm tra ByteCount theo yêu cầu để giám sát tiến trình download ..
EDIT: Bạn muốn làm điều gì đó như thế này:
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();
Nếu chương trình của bạn đa luồng, bạn có thể muốn theo dõi tiến trình bằng cách sử dụng một luồng riêng biệt (ví dụ, đối với một chương trình GUI), nhưng đó là tất cả chi tiết ứng dụng cụ thể.
Bạn cần tương đương với hàm "băm" của chúng - không biết nó là gì. – duffymo
Tôi đã đọc một cái gì đó về một copyStreamAdapter, nhưng tôi không biết bất kỳ chi tiết nào về nó. –