Büyük bir dosyayı okumak/yazmak için (muhtemelen 60 GB'tan büyük) bir C++ programı yazıyorum. Sorunu googling yaparak, 32 bit sistemde dosya üzerinde 2GB bir limit var gibi görünüyor (Windows 7 64bit kullanıyorum ama program mingw32 ile derlendi). Programımda, dosyaya bir kerede 10 tamsayı yazıyorum ve tüm bu rakamlar, bazı algoritmalara göre rasgele oluşturuluyor. Programın boyutu 40 GB'tan büyük olduğunda bile çalışabiliyor gibi görünüyor, ancak program tarafından okunan verilerin gerçekten dosyada saklanan bir dosya mı yoksa bazı gereksiz numaralar mı olduğunu kontrol etmenin bir yolu yok. Ama yine de, program herhangi bir uyarı veya hata bildirmiyor. Bu 32-bit bir programda 60GB daha büyük dosya okumak/yazmak mümkün mü?C++ fstream tarafından dosya okuma/yazma için 2G sınırı var mı?
cevap
Fat32 dosya sisteminde dosya boyutu sınırı (4GB max, sanırım) var. Windows 7 kesinlikle bu dosya sistemini varsayılan olarak kullanmamalı.
Ayrıca 32bit sistemde, dosya boyutunda CreateFileMapping/MapViewOfFile kullanarak bir kerede eşleştirebileceğiniz bir sınır vardır. Ancak, fstream, CreateFileMapping/MapViewOfFile öğesini dahili olarak kullanmaz, bu nedenle dosya boyutu için bir sınır yoktur (dosya sistemi sınırlarının yanı sıra). CreateFileMapping ile bile, daha büyük dosyaların bir kısmını belleğe aktarabilirsiniz, böylece dosya sistemi tarafından dayatılan bir sınır yoktur.
oh, eğer fstream dosya boyutu üzerinde bir sınırlama yoksa, benim için harika bir haber olacak çünkü 4GB sınırını önlemek için dosyamı nasıl parçalara ayıracağımı bilmiyorum. Teşekkürler – user1285419
"Windows 7 kesinlikle bu dosya sistemini varsayılan olarak kullanmamalı." - Bu ifade çok geniştir. Ancak, soru 40GB veya 60GB'lık bir dosya içerdiğinden, muhtemelen USB flash bellekte değil. –
@Windowsprogrammer: exFAT – SigTerm
- 1. fstream bir dosya yaratmıyor
- 2. Toplu çıktı dosyalarına boyut sınırı var mı?
- 3. GWT CEllTables'in 15 satır sınırı var mı?
- 4. Listede saklanabilecek bir öğe sınırı var mı?
- 5. Bir Firefox İşçi sınırı var mı?
- 6. İstisna fstream açık
- 7. C# için Guava var mı?
- 8. Google Chrome tarayıcı için herhangi bir bellek sınırı var mı?
- 9. JavaScript XML metin düğümleri için 4096 karakter sınırı var mı?
- 10. Erlang tam sayıları için bir boyut sınırı var mı?
- 11. DataView.Sort için bir boyut/karmaşıklık sınırı var mı?
- 12. C# kütüphaneleri için OnLoad olayı var mı?
- 13. 2G veya 3G veri API'si
- 14. C# 7.0 için Microsoft.Net.Compilers eşdeğer var mı?
- 15. C programlama için bir REPL var mı?
- 16. C için bir wxWidgets çerçevesi var mı?
- 17. Kendo liste görünümünde görüntüleyebileceği veri miktarı sınırı var mı?
- 18. Aynı anda çalıştırılacak bir AsyncTasks sınırı var mı?
- 19. Jilet tarafından desteklenen lambda ifadeleri var mı?
- 20. sdwebimage: kaç setimageWithUrl kuyruğa alınabileceğinin bir sınırı var mı?
- 21. Yineleme Sınırı Elle Sınırlı mı?
- 22. Kullanıcılara dosya depolama sınırı nasıl verilir?
- 23. jQuery json ile ASP.NET WebMethod, bir boyut sınırı var mı?
- 24. Dosya adını `FILE *` den almak için bir yol var mı?
- 25. HTML5 Kanvas Çizimi Rect - Diff Genişliğinin Sınırı Var Mı?
- 26. MDB'ye erişme: erişim MDB dosyalarının üst boyut sınırı var mı?
- 27. PBix dosya formatı için dokümantasyon/API var mı?
- 28. C++ Newbie: Veri okumak için bir işlev için bir fstream geçiriliyor
- 29. "Yol Tarifleri Web Hizmeti" IP'si için 2,500 istek sınırı var mı?
- 30. # İçinde iostream var mı? C
http://stackoverflow.com/questions/301995/write-large-file –
Muhtemel kopyası Carey Gregory tarafından verilen bağlantının 2GByte dosya sınırı sorusunu yanıtladığını düşünüyorum. Numaraların doğru yazıldığını kontrol etmenin bir yolu yok mu? Rasgele sayılar yazmak yerine, 8GB'lık bir dosya olacak olan 0 ile 2,147,483,647 (tüm pozitif 32 bit tam sayı) sayılarının sırasını yazarak sınayabilirsiniz. – gbulmer