मुझे 16 जीबी फ़ाइल का विश्लेषण करना है। मैं अनुक्रमिक रूप से fread()
और fseek()
का उपयोग कर फ़ाइल के माध्यम से पढ़ रहा हूं। क्या यह व्यवहार्य है? fread()
ऐसी बड़ी फ़ाइल के लिए काम करेगा?बड़ी फ़ाइलों के लिए विफल विफल रहता है?
उत्तर
यह इस बात पर निर्भर करता है कि आप क्या करना चाहते हैं। यदि आप स्मृति में पूरे 16 जीबी डेटा को पढ़ना चाहते हैं, तो संभावना है कि आप मेमोरी या एप्लिकेशन हीप स्पेस से बाहर हो जाएंगे।
इसके बजाय डेटा द्वारा खंड को पढ़कर पढ़ें और उन हिस्सों पर प्रसंस्करण करें (और जब किया जाता है तो मुक्त संसाधन)।
लेकिन, इसके अलावा, यह तय करें कि आप किस दृष्टिकोण को करना चाहते हैं (fread()
या istream
इत्यादि का उपयोग करके) और कुछ परीक्षण केस करें ताकि यह देखने के लिए कि आपके लिए कौन सा बेहतर काम करता है।
यदि सही ढंग से कार्यान्वित किया गया तो यह कोई समस्या नहीं होनी चाहिए। मैं अनुक्रमिक रूप से मानता हूं कि आप अलग-अलग हिस्सों में फ़ाइल को देख रहे हैं और अपनी फ़ाइल पॉइंटर को आगे बढ़ा रहे हैं।
चेक बाहर http://www.computing.net/answers/programming/using-fread-with-a-large-file-/10254.html
ऐसा लगता है कि वह आप के रूप में लगभग एक ही बात कर रहा था।
आप एक ऐसी भाषा का उल्लेख नहीं है, इसलिए मैं सी
ग्रहण करने के लिए मैं fread
, लेकिन fseek
और ftell
के साथ कोई समस्या नहीं दिख रहा मुद्दों हो सकता है जा रहा हूँ।
वे फ़ंक्शन long int
का उपयोग fpos_t
या यहां तक कि size_t
जैसे कुछ बुद्धिमान की बजाय फ़ाइल स्थिति को पकड़ने के लिए डेटा प्रकार के रूप में करते हैं। इसका मतलब है कि वे 2 जीबी से अधिक फाइल पर काम करने में असफल हो सकते हैं, और निश्चित रूप से 16 जीबी फाइल पर असफल हो सकते हैं।
आपको यह देखने की ज़रूरत है कि long int
आपके प्लेटफ़ॉर्म पर कितना बड़ा है। यदि यह 64 बिट्स है, तो आप ठीक हैं। यदि यह 32 है, तो फ़ाइल की शुरुआत से दूरी मापने के लिए ftell
का उपयोग करते समय आपको समस्याएं होने की संभावना है।
इसके बजाय fgetpos
और fsetpos
का उपयोग करने पर विचार करें।
टिप्पणी * ".. आप कानूनी रूप से 'ftell'' पर कॉल किए बिना गैर-शून्य 'fseek' ऑफ़सेट का उपयोग नहीं कर सकते हैं * * पाठ मोड में खोले गए फ़ाइलों के लिए केवल सत्य है। बाइनरी मोड में खोले गए फाइलें 'SEEK_SET' और' SEEK_CUR' का उपयोग मनमाने ढंग से ऑफसेट के साथ कर सकती हैं। – caf
@caf: धन्यवाद। जैसा कि आपने सुझाव दिया है मेरा जवाब बदल दिया गया है। –
यदि आप एक पॉज़िक्स-आईएसएच सिस्टम पर हैं, तो आपको यह सुनिश्चित करना होगा कि आपने 64-बिट फ़ाइल ऑफ़सेट समर्थन के साथ अपना प्रोग्राम बनाया है। POSIX जरूरी है (या कम से कम अनुमति देता है, और अधिकांश सिस्टम इसे लागू करते हैं) उन फ़ाइलों पर आईओ ऑपरेशंस को अस्वीकार करने के लिए कार्यान्वयन, जिनका आकार off_t
में फिट नहीं होता है, भले ही केवल आईओ किया जा रहा हो, अनुक्रमिक नहीं है।
लिनक्स पर, इसका मतलब है कि आपको gcc
कमांड लाइन पर -D_FILE_OFFSET_BITS=64
का उपयोग करने की आवश्यकता है।
प्रतिक्रिया के लिए धन्यवाद। मुझे पता चला कि मैं गलत कहां जा रहा था। fseek()
और ftell()
4 जीबी से बड़ी फ़ाइलों के लिए काम नहीं करते हैं। मैंने _fseeki64()
और _ftelli64()
का उपयोग किया और यह अभी ठीक काम कर रहा है।
- 1. AVAssetExport कुछ फ़ाइलों के लिए विफल रहता है
- 2. .Net FileWatcher ~ 80 + फ़ाइलों के लिए विफल रहता है
- 3. document.createEvent विफल रहता है
- 4. WebBrowserTask विफल रहता है
- 5. DQL क्वेरी विफल रहता है
- 6. gclient runhooks विफल रहता है
- 7. , परिसंपत्ति precompile विफल रहता है
- 8. गतिशील_कास्ट कैसे विफल रहता है?
- 9. openWithDefault एप्लिकेशन अनुप्रयोग फ़ोल्डर में फ़ाइलों पर विफल रहता है
- 10. WebRequest बड़ी फ़ाइलों (~ 1 जीबी) को ठीक से डाउनलोड करने में विफल रहता है
- 11. आईओएस पर एमएमएपी क्यों विफल रहता है?
- 12. ज़ीरोएमक्यू सॉकेट कितनी परिस्थितियों में संदेश वितरित करने में विफल रहता है या विफल रहता है?
- 13. writeToFile विफल रहता है - मैं कैसे डिबग करता हूं यह विफल रहता है (कौन से टूल्स)?
- 14. कैपिस्ट्रानो कई होस्ट तैनाती के लिए विफल रहता है
- 15. क्यों संग्रह .shuffle() मेरी सरणी के लिए विफल रहता है?
- 16. विधि अधिभार स्थिर + डायनामिक विफल रहता है
- 17. कबाल: कबाल कॉन्फ़िगर विफल रहता है
- 18. मेकफ़ाइल पैटर्न नियम विफल रहता है?
- 19. fopen अदृश्य रूप में विफल रहता है
- 20. ASIHTTPRequest उत्पादन में विफल रहता है
- 21. RadAjaxManager AJAX अनुरोध विफल रहता है
- 22. easy_install जनहित याचिका में विफल रहता है
- 23. प्रिंटफ प्रिंट करने में विफल रहता है?
- 24. किस ऑब्जेक्ट विशेषता पिक विफल रहता है?
- 25. यह संग्रहAssert.AreEquivalent() परीक्षण क्यों विफल रहता है?
- 26. रूटिंग Laravel में विफल रहता है 4
- 27. डेल्फी अक्षम चेतावनी विफल रहता है
- 28. "बंडल इंस्टॉल" विफल रहता है जबकि rspec
- 29. & nbsp; एचटीएमएल 5 सत्यापन विफल रहता है
- 30. कर्ल टाइमआउट हमेशा विफल रहता है?
क्या आप इस्तेमाल की जाने वाली भाषा को स्पष्ट कर सकते हैं? –
मैं आगे बढ़ने वाला हूं और अनुमान लगाता हूं कि सी – wallacer
फ़्रेड और फ़ेक भी किसी अन्य भाषा में मानकों के रूप में मौजूद है? – wallacer