जावा में बड़ी संख्या में फ़ाइलों की प्रतिलिपि बनाने का सबसे तेज़ तरीका क्या है। अब तक मैंने फ़ाइल स्ट्रीम और एनओओ का उपयोग किया है। कुल मिलाकर धाराएं एनओओ से तेज लगती हैं। अब तक आपने क्या अनुभव किए हैं?जावा में फ़ाइलों की प्रतिलिपि बनाने का सबसे तेज़ तरीका
उत्तर
http://www.baptiste-wicht.com/2010/08/file-copy-in-java-benchmark/ आप अपने जवाब मिल सकता है।
बेंचमार्क के लिए, मैंने विभिन्न फ़ाइलों का उपयोग करके परीक्षण किए।
- लिटिल फ़ाइल (5 KB)
- मध्यम फ़ाइल (50 KB)
- बिग फ़ाइल (5 एमबी)
- फैट फ़ाइल (50 एमबी)
- और एक विशाल फ़ाइल (1.3 जीबी) केवल बाइनरी
और मैंने टेक्स्ट फ़ाइलों का उपयोग करके पहले परीक्षण किया और फिर बाइनरी फ़ाइलों का उपयोग किया। मैंने तीन मोड में प्रयोग किए गए परीक्षण किए:
- उसी हार्ड डिस्क पर। यह 8 जीबी कैश के साथ 250 जीबी की आईडीई हार्ड डिस्क है। यह Ext4 में स्वरूपित है।
- दो डिस्क के बीच। मैंने 16 एमबी कैश के साथ पहली डिस्क और 250 जीबी की एक अन्य सैटा हार्ड डिस्क का इस्तेमाल किया। यह Ext4 में स्वरूपित है।
- दो डिस्क के बीच। मैंने 32 एमबी कैश के साथ पहली डिस्क और 1 टीबी की एक अन्य सैटा हार्ड डिस्क का इस्तेमाल किया। यह NTFS का उपयोग करके स्वरूपित है।
मैंने सभी विधियों के परीक्षण करने के लिए एक बेंचमार्क फ्रेमवर्क, described here का उपयोग किया। परीक्षण मेरे व्यक्तिगत कंप्यूटर (उबंटू 10.04 64 बिट्स, इंटेल कोर 2 डुओ 3.16 गीगा, 6 गो डीडीआर 2, सैटा हार्ड डिस्क) पर किए गए हैं। इस्तेमाल किया जावा संस्करण एक जावा 7 64 बिट्स वर्चुअल मशीन है ...
धन्यवाद, यह मेरे प्रश्न का उत्तर देता है – Mato
एक ओएस बैच स्क्रिप्ट से जावा कांटा है जो फ़ाइलों की प्रतिलिपि बनाता है। आपके कोड को बैच स्क्रिप्ट लिखना पड़ सकता है।
इसके बारे में पहले से ही सोचा गया है लेकिन छोटी फ़ाइलों की प्रतिलिपि करते समय 10,000+ फ़ाइलों की प्रतिलिपि बनाने और सिस्टम थ्रेड को बढ़ाने के ऊपरी हिस्से में त्रुटि प्रबंधन करना मुश्किल होगा। इसके अलावा ऐप मंच स्वतंत्र नहीं होगा। – Mato
1. आपको वैसे भी त्रुटि जांच को संभालना होगा। 2. आप सही हैं कि यह मंच स्वतंत्र नहीं होगा - तो आप इसे विभिन्न प्रकार के सर्वरों पर चलाने का इरादा रखते हैं? 3. क्या आप 'उचित' जगह में 10,000 फाइलें शुरू कर सकते हैं और प्रतिलिपि की आवश्यकता नहीं है? 4. प्रति फ़ाइल एक थ्रेड स्पॉन मत करो। एक थ्रेड प्रति 100 फाइलें या कुछ। –
मैं इसके साथ सहमत हूं। फ़ाइलों की गूंगा प्रतिलिपि जावा का आदर्श उपयोग मामला नहीं है। यदि आप जावा से ऐसा करना चाहते हैं, तो ओएस स्तर कॉल को फोर्क करें। – bwawok
मैं का प्रयोग करेंगे:
import java.io.*;
import java.nio.channels.*;
public class FileUtils{
public static void copyFile(File in, File out)
throws IOException
{
FileChannel inChannel = new
FileInputStream(in).getChannel();
FileChannel outChannel = new
FileOutputStream(out).getChannel();
try {
inChannel.transferTo(0, inChannel.size(),
outChannel);
}
catch (IOException e) {
throw e;
}
finally {
if (inChannel != null) inChannel.close();
if (outChannel != null) outChannel.close();
}
}
public static void main(String args[]) throws IOException{
FileUtils.copyFile(new File(args[0]),new File(args[1]));
}
}
आप इस को देखने के लिए आवश्यकता हो सकती है आपकी फ़ाइलों के किसी भी Windows में 64M से भी बड़ा कर रहे हैं: http://forums.sun.com/thread.jspa?threadID=439695&messageID=2917510
पकड़ (IOException ई) { फेंक ई; } <--- अच्छा एक – unbeli
यह सिर्फ नमूना कोड है। –
धन्यवाद यह मेरे द्वारा उपयोग किए जा रहे कार्यों की तुलना में काफी तेज़ था! –
आप फ़ाइल की प्रतिलिपि करने
FileUtils.copyFile(new File(sourcePath), new File(destPath));
कौन सा आईओ के लिए FileChannel का उपयोग करता है Apache Commons-कब पुस्तकालय में से किसी FileUtils कार्यान्वयन का उपयोग कर सकते ऑपरेशन।
या java.nio.file.Files
की copy()
विधि का उपयोग करें।
- 1. एक्सेल में स्वरूपण की प्रतिलिपि बनाने के लिए तेज़ तरीका
- 2. गतिशील ऑब्जेक्ट की प्रतिलिपि बनाने का सबसे तेज़ तरीका है जो कॉपी फ़ंक्शन
- 3. पंक्तियों की प्रतिलिपि बनाने का तरीका आर
- 4. एक सरल सिम्बियन ऐप बनाने का सबसे तेज़ तरीका?
- 5. ग्रैडल में फ़ाइलों की प्रतिलिपि बनाने का पारंपरिक तरीका - कार्य प्रतिलिपि या प्रतिलिपि विधि का उपयोग करें?
- 6. जावा: रक्षात्मक रूप से एक int [] की प्रतिलिपि बनाने का सबसे प्रभावी तरीका?
- 7. पर्ल में अभी तक बनने वाली निर्देशिका पेड़ में फ़ाइलों की प्रतिलिपि बनाने का सबसे अच्छा तरीका क्या है?
- 8. एसटीएल में एक सूची में वेक्टर की प्रतिलिपि बनाने का सबसे अच्छा तरीका?
- 9. सी # में प्राइम की गणना करने का सबसे तेज़ तरीका?
- 10. डेटाबेस की प्रतिलिपि बनाने का सर्वोत्तम तरीका (SQL सर्वर 2008)
- 11. एक पुनरावृत्त वस्तु की प्रतिलिपि बनाने का पाइथोनिक तरीका
- 12. पर्ल में हैश के हैश की गहरी प्रतिलिपि बनाने का सबसे अच्छा तरीका क्या है?
- 13. सी # में डेटाटेव को डेटाटाइव की प्रतिलिपि बनाने का सबसे आसान तरीका?
- 14. पर्ल में डेटा संरचना की गहरी प्रतिलिपि बनाने का सबसे अच्छा तरीका क्या है?
- 15. जावा में एक जीयूआई बनाने का सबसे आसान तरीका?
- 16. जावा से SQL सर्वर में थोक-प्रतिलिपि करने का सबसे प्रभावी तरीका क्या है?
- 17. स्ट्रिंग को जांचने का सबसे तेज़ तरीका जावा
- 18. md5_file() को तेज़ बनाने का एक तरीका?
- 19. ग्रेगोरियन कैलेंडर को क्लोन करने का सबसे तेज़ तरीका?
- 20. वेबसाइट उत्तरदायी बनाने के लिए सबसे तेज़ तरीका?
- 21. विभिन्न पथों से एकाधिक फ़ाइलों की प्रतिलिपि बनाने का स्मार्ट तरीका Usinc scp
- 22. इनपुट फ़ाइलों को पढ़ने, सबसे तेज़ तरीका संभव है?
- 23. पंक्तियों की एक्सेल रेंज प्राप्त करने का सबसे तेज़ तरीका
- 24. ज़ेंड फ्रेमवर्क सीखने का सबसे तेज़ तरीका?
- 25. विंडोज सिस्टम पर फ़ाइलों को स्थानांतरित करने का सबसे तेज़ तरीका
- 26. डीटीओ पैटर्न: दो ऑब्जेक्ट्स के बीच गुणों की प्रतिलिपि बनाने का सबसे अच्छा तरीका
- 27. टी-एसक्यूएल: पदानुक्रम डेटा की प्रतिलिपि बनाने का सबसे अच्छा तरीका?
- 28. ऐरेबफर ऑब्जेक्ट की प्रतिलिपि बनाने का सबसे सरल तरीका क्या है?
- 29. लूप के भीतर से अद्वितीय तारों की सूची बनाने का सबसे तेज़ तरीका?
- 30. एक वेक्टर की सामग्री को एक सरणी में कॉपी करने का सबसे तेज़ तरीका?
क्या आप फ़ाइलों की प्रतिलिपि बना रहे हैं जैसे आप उन्हें कॉपी करते हैं? क्यों न केवल ओएस के फाइल सिस्टम कार्यों का उपयोग करें? –
नहीं, मैं कोई परिवर्तन नहीं कर रहा हूं। लेकिन छोटी फ़ाइलों की प्रतिलिपि करते समय 10,000+ फ़ाइलों की प्रतिलिपि बनाने और सिस्टम थ्रेड को बढ़ाने के ऊपरी हिस्से में त्रुटि प्रबंधन बहुत कठिन होगा। – Mato
मैं आपको अपनी बाधाओं को शामिल करने के लिए अपना प्रश्न संशोधित करने की सलाह देता हूं। –