मेन्यू

जावा फ़ाइल कॉपी (आसान और तेज़)

विषयसूची

जावा फ़ाइल कॉपी (आसान और तेज़)FileChannel#transferTo

जावा मेंप्रतिलिपि फ़ाइलऐसा करने के लिए एक नमूना कार्यक्रम प्रस्तुत है।
नमूना कार्यक्रम J2SE1.4 में पेश किए गए नए I/O पर आधारित है। java.nio.channels.FileChannel#transferTo तरीका।
आप डेटा पढ़ने के लिए आवश्यक बफर के बारे में चिंता किए बिना एक कॉपी प्रोसेसिंग प्रोग्राम लिख सकते हैं, जिससे यह सबसे सरल कोडिंग विधि बन जाएगी।

चैनल क्या है?

चैनल शब्द का प्रयोग कई अलग-अलग तरीकों से किया जाता है।
मूल रूप से, यह अन्य उपकरणों के बीच डेटा इनपुट और आउटपुट के लिए ट्रांसमिशन पथ को इंगित करता प्रतीत होता है।java.nio.channels.FileChannel एक वर्ग है जो फ़ाइलों को पढ़ने और लिखने के लिए एक कनेक्शन का प्रतिनिधित्व करता है।

के लिए स्थानांतरण एक विधि स्रोत फ़ाइल से गंतव्य चैनल पर बाइट्स स्थानांतरित कर सकती है।

निम्नलिखित JavaAPI दस्तावेज़ से उद्धृत किया गया है।

स्थानांतरण (लंबी स्थिति, लंबी गिनती, WritableByteChannel लक्ष्य)
इस चैनल की फ़ाइल से बाइट्स को निर्दिष्ट लिखने योग्य बाइट चैनल में स्थानांतरित करता है।
यह विधि एक साधारण लूप की तुलना में बहुत अधिक कुशल हो सकती है जो इस चैनल से डेटा पढ़ता है और इसे लक्ष्य चैनल पर लिखता है। कई ऑपरेटिंग सिस्टम फ़ाइल सिस्टम कैश से सीधे लक्ष्य चैनल पर बाइट्स स्थानांतरित कर सकते हैं। इस समय, कोई बाइट्स कॉपी नहीं की जाती हैं.

यह सत्यापन परिणाम दिखाता है कि सामान्य स्ट्रीम का उपयोग कैसे करें,
प्रतिलिपि प्रक्रिया अन्य FileChannel विधियों (जैसे ByteBuffer#allocateDirect विधि का उपयोग करना) की तुलना में तेज़ थी।


नमूना कार्यक्रम

कार्यान्वयन

नमूना प्रोग्राम फ़ाइल की प्रतिलिपि बनाने के लिए, हमने सीधे C ड्राइव के अंतर्गत एक 100MB फ़ाइल "100M.txt" तैयार की है।
नमूना कार्यक्रम में C:\100M.txt नकल करके सी:\a.txt एक फ़ाइल बनाएं.

नमूना निम्नलिखित वातावरण में निष्पादित किया गया था।
ओएस: विंडोज़एक्सपी
सीपीयू: एथलॉन 1.46GHz
मेमोरी: 1 जीबी
जेआरई: 1.6.4

◆निष्पादन उदाहरण

/** * निष्पादन उदाहरण * @param args */ सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) { प्रयास करें {copyTransfer("C:\\100M.txt", "C:\\a.txt"); } पकड़ें (IOException e) { e.printStackTrace(); } }

◆निष्पादन परिणाम


 FileChannel#transferTo विधि का उपयोग करके प्रतिलिपि प्रसंस्करण में
100MB फ़ाइल की प्रतिलिपि लगभग 3 सेकंड में पूरी हो गई। साथ ही, प्रतिलिपि प्रक्रिया के दौरान हीप उपयोग लगभग 300 (KB) था।

वैसे,जावा फ़ाइल कॉपी (बफ़र आकार बदलें)में प्रस्तुत विधि में
जब हमने 1000KB का सबसे कुशल बफ़र आकार निर्दिष्ट किया, तो प्रसंस्करण समय लगभग 4 सेकंड था और ढेर का उपयोग लगभग 1,300KB था।

यहां तक कि स्ट्रीम द्वारा फ़ाइल कॉपी करने को भी बफर आकार को ट्यून करके तेज़ किया जा सकता है
यह कहा जा सकता है कि किसी एक फाइल को कॉपी करने की प्रक्रिया में ज्यादा अंतर नहीं होता है।
हालाँकि, बड़ी फ़ाइलों को लगातार कॉपी करते समय या समानांतर में कई कॉपी प्रक्रियाओं को निष्पादित करते समय, FileChannel प्रसंस्करण गति और ढेर उपयोग के मामले में प्रभावी हो सकता है।

  • URLをコピーしました!
विषयसूची