मैं एक बड़ी फ़ाइल (शायद 60 जीबी से बड़ा) पढ़ने/लिखने के लिए एक सी ++ प्रोग्राम लिख रहा हूं। समस्या को गुमराह करके, ऐसा लगता है कि 32 बिट सिस्टम में फ़ाइल आईओ पर 2 जीबी सीमा है (मैं विंडोज 7 64 बिट का उपयोग कर रहा हूं लेकिन मेरा प्रोग्राम mingw32 के साथ संकलित किया गया था)। मेरे कार्यक्रम में, मैं फ़ाइल में एक समय में 10 पूर्णांक लिख रहा हूं और ये सभी संख्याएं कुछ एल्गोरिदम के आधार पर यादृच्छिक रूप से उत्पन्न होती हैं। ऐसा लगता है कि प्रोग्राम तब भी चला सकता है जब फ़ाइल का आकार 40 जीबी से बड़ा हो लेकिन प्रोग्राम के द्वारा पढ़ा गया डेटा वास्तव में फाइल या कुछ जंक नंबरों में संग्रहीत डेटा को जांचने का कोई तरीका नहीं है। लेकिन वैसे भी, कार्यक्रम किसी भी चेतावनी या त्रुटि की रिपोर्ट नहीं करता है। क्या 32-बिट प्रोग्राम में 60 जीबी से बड़ी फ़ाइल को पढ़ने/लिखना वाकई संभव है?सी ++ fstream द्वारा फ़ाइल पढ़ने/लिखने के लिए 2 जी सीमा है?
उत्तर
फ़ैट 32 फ़ाइल सिस्टम पर फ़ाइल आकार (4 जीबी अधिकतम, मुझे लगता है) पर एक सीमा है। विंडोज 7 निश्चित रूप से डिफ़ॉल्ट रूप से उस फाइल सिस्टम का उपयोग नहीं करना चाहिए।
इसके अलावा 32 बिट सिस्टम पर फ़ाइल आकार पर एक सीमा है जिसे आप CreateFileMapping/MapViewOfFile का उपयोग करके स्मृति में मैप कर सकते हैं। हालांकि, fstream आंतरिक रूप से CreateFileMapping/MapViewOfFile का उपयोग नहीं करता है, इसलिए फ़ाइल आकार के लिए कोई सीमा नहीं है (फाइल सिस्टम सीमाओं के अलावा)। और CreateFileMapping के साथ भी आप बड़ी फ़ाइल के हिस्से को मेमोरी में मैप कर सकते हैं, इसलिए फाइल सिस्टम द्वारा लगाए गए किसी भी सीमा से अलग कोई सीमा नहीं है।
ओह, अगर fstream में वास्तव में फ़ाइल आकार पर सीमा नहीं है, तो यह मेरे लिए एक अच्छी खबर होगी क्योंकि मुझे नहीं पता कि 4 जीबी सीमा से बचने के लिए मेरी फाइल को टुकड़ों में कैसे तोड़ना है। धन्यवाद – user1285419
"विंडोज 7 निश्चित रूप से डिफ़ॉल्ट रूप से उस फाइल सिस्टम का उपयोग नहीं करना चाहिए।" - वह बयान बहुत व्यापक है। हालांकि, चूंकि प्रश्न में 40 जीबी या 60 जीबी फ़ाइल शामिल है, यह शायद यूएसबी फ्लैश मेमोरी पर नहीं है। –
@ विन्डोजप्रोग्रामर: एक्सएफएटी – SigTerm
- 1. 2 जी/3 जी
- 2. फ़ाइल बनाम fstream
- 3. Fstream नई फ़ाइल
- 4. प्राप्त कर रहा है फ़ाइल वर्णनकर्ता :: fstream
- 5. 2 जी या 3 जी डेटा एपीआई
- 6. fstream
- 7. std :: fstream फ़ाइल नहीं बनाता
- 8. सी fstream की चोटी के बराबर
- 9. ज़िप या बाइनरी के लिए 3 जी ऐप स्टोर डाउनलोड के लिए 10 एमबी सीमा है?
- 10. ऐप्पल टीवी 2 जी
- 11. सी ++ (जी ++)
- 12. fstream fstream के साथ फ़ाइल में कैसे संलग्न करें :: ऐप ध्वज काम नहीं करता है
- 13. सी ++ नौसिखिया: एक समारोह के लिए एक fstream पासिंग डेटा
- 14. std :: fstream फाइलें 2 जीबी से अधिक
- 15. fstream पढ़ने/लिखने की चाल फ़ाइल सूचक
- 16. एक std :: fstream
- 17. std का उपयोग करना: fstream फ़ाइल को
- 18. सी # जेनेरिक - डिजाइन द्वारा कम सीमा के बिना?
- 19. iPhone सक्रिय नेटवर्क प्रकार (2 जी, 3 जी, वाई-फाई)
- 20. कैसे बढ़ाने के लिए अपाचे 2 uri लंबाई सीमा
- 21. क्या System.IO.FileShare के लिए कोई सीमा है?
- 22. सी-लाइब्रेरी जीसीसी/जी ++
- 23. क्या लिनक्स में कर्नेल मॉड्यूल के लिए आकार सीमा है?
- 24. 2 फॉर्म सीमा
- 25. सी ++ - 2 वर्गों 1 फ़ाइल
- 26. जी ++
- 27. "जी ++" और "सी ++" कंपाइलर
- 28. सी # जेनेरिक विशेषता सीमा के लिए वर्कअराउंड
- 29. फ़ाइल नाम बदलने के लिए
- 30. जी ++
http://stackoverflow.com/questions/301995/write-large-file –
का संभावित डुप्लिकेट मुझे लगता है कि केरी ग्रेगरी द्वारा दिया गया लिंक 2GByte फ़ाइल सीमा प्रश्न का उत्तर देता है। यह जांचने का कोई तरीका नहीं है कि संख्याएं सही तरीके से लिखी गई हैं? यादृच्छिक संख्याओं को लिखने के बजाय, आप संख्या 0 से 2,147,483,647 (सभी सकारात्मक 32 बिट पूर्णांक) के अनुक्रम को लिखकर परीक्षण कर सकते हैं, जो एक 8 जीबी फ़ाइल होगी, फिर इसे वापस पढ़ें। – gbulmer