2011-05-03 14 views
8

का उपयोग कर निगरानी की प्रगति मेरे पास एक साधारण एफ़टीपी क्लाइंट क्लास है जो फ़ाइलों को एफ़टीपी सर्वर बनाता है। मुझे डाउनलोड की प्रगति की निगरानी करने की भी आवश्यकता है, लेकिन मुझे कोई तरीका नहीं दिख रहा है। वास्तव में डाउनलोड फ़ाइलों समारोहअपाचे कॉमन्स एफ़टीपी क्लाइंट

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

का एक सरल समारोह मैं कैसे डाउनलोड प्रगति की निगरानी कर सकते हैं?

धन्यवाद, एनोन।

+0

आपको अपने "हैश" फ़ंक्शन के बराबर की आवश्यकता है - यह नहीं पता कि यह क्या है। – duffymo

+0

मैंने एक copyStreamAdapter के बारे में कुछ पढ़ा है, लेकिन मुझे इसके बारे में कोई जानकारी नहीं है। –

उत्तर

18

आपको एक गिनतीऑटपुटस्ट्रीम की आवश्यकता है (जैसा कि कॉमन्स आईओ: 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(); 

: आप कुछ इस तरह करते हैं चाहते हैं यदि आपका प्रोग्राम बहुप्रचारित है तो आप एक अलग थ्रेड (उदाहरण के लिए, एक जीयूआई प्रोग्राम के लिए) का उपयोग करके प्रगति की निगरानी करना चाहेंगे, लेकिन यह सभी एप्लिकेशन-विशिष्ट विवरण है।

+1

क्या मुझे एक उदाहरण दिखाई दे सकता है? –

संबंधित मुद्दे