मुझे JProgressBar
घटक के साथ थोड़ी मदद चाहिए। मेरा प्रोग्राम java.nio FileChannels
का उपयोग कर फ़ाइलों को एक स्थान से दूसरे स्थान पर कॉपी करता है। वास्तविक प्रति विधि transferFrom()
है।FileChannels TransferFrom() विधि के साथ प्रगति (जेपी प्रोग्रेसबार) की निगरानी कैसे करें?
मुझे अब दो प्रश्न हैं।
मैं फ़ाइलChannels की स्थानांतरण प्रगति की निगरानी कैसे करूं? मैंने पाया है कि सभी ट्यूटोरियल पारंपरिक java.io इनपुटस्ट्रीम का उपयोग करते हैं और इनपुटस्ट्रीम के माध्यम से लूपिंग करते समय प्रगति int बढ़ाते हैं।
मेरी प्रतिलिपि विधियों (फ़ाइलChannel विधियों) एक अलग विधि में encapsulated हैं जो स्रोत और गंतव्य फ़ोल्डरों के बावजूद अन्य विधियों द्वारा लागू किया जाता है और फिर प्रत्येक फ़ाइल के लिए FileChannel विधियों का आह्वान करते हैं।
मैं पूरी प्रतिलिपि तंत्र के लिए प्रोग्रेसबार को कैसे कार्यान्वित करूं?
वैसे मुझे थोड़ा पहले पूछे जाने वाले प्रश्नों को पढ़ना चाहिए था, इसलिए मुझे लगता है कि मुझे जवाबों की टिप्पणी करने के बजाय अपनी प्रारंभिक पोस्ट को संपादित करना होगा, है ना?
ठीक है, मैंने अभी तक यह किया है। जैसे जंबो ने सुझाव दिया (वैसे धन्यवाद), transferFrom()
विधि अब लूप हो गई है। बीटीडब्ल्यू: क्या कोई बेहतर हिस्सा आकार है, या क्या यह मेरी प्रगति पट्टी की ग्रैन्युलरिटी पर निर्भर करता है जैसे ईजेपी ने कहा था?
यहाँ मेरी कोड स्निपेट है:
while (position < size) {
position += destination.transferFrom(source, position, chunkSize);
current = (position/size)*100;
System.out.println(current);
}
दुर्भाग्य से 'वर्तमान' मूल्य पाश के भीतर 0 रहता है और मैं पता नहीं क्यों मिल गया है। क्या मुझे कुछ याद आ रही है?
धन्यवाद फिर से jambjo! मुझे वास्तव में आपका इनपुट अच्छा लगा! अब एक फ़ाइल की प्रगति की निगरानी काम करता है, चलो मेरी दूसरी समस्या को संबोधित करते हैं।
मुझे नहीं, मुझे केवल एक फ़ाइल की प्रगति की निगरानी करने की ज़रूरत नहीं है, बल्कि फाइलों का एक समूह है। मेरी मुख्य प्रति विधि विभिन्न निर्देशिकाओं के माध्यम से पुनरावृत्ति करती है और वास्तविक स्थानांतरण विधि का आह्वान करके उचित फ़ाइलों की प्रतिलिपि बनाता है। तो कॉपी विधियां फ़ाइलों को स्थानांतरित नहीं करती हैं, वे केवल वास्तविक स्थानांतरण विधि के लिए फ़ाइलों का चयन कर रहे हैं।
यदि स्थिति और आकार पूर्णांक प्रकार (int या long) हैं, तो पूर्णांक विभाजन स्थिति/आकार हमेशा 0 होगा, यदि आकार स्थिति से अधिक है। (int) (100. * स्थिति/आकार) शायद आप जो चाहते हैं वह करेंगे। – jarnbjo