我正在写一个C++程序来读/写一个大文件(可能大于60GB)。通过使用google搜索这个问题,似乎在32位系统(我正在使用Windows 7 64位,但我的程序是用mingw32编译的)文件io有2GB的限制。在我的程序中,我一次向文件写入10个整数,所有这些数字都是根据某种算法随机生成的。看起来程序甚至可以在文件大小超过40GB时运行,但是我无法检查程序读取的数据是否真的是存储在文件中的数据或一些垃圾数字。但无论如何,该程序不会报告任何警告或错误。在32位程序中,这是否真的有可能读取/写入大于60GB的文件?是否有2G限制文件读/写由C++ fstream?
回答
Fat32文件系统上的文件大小(我认为最大为4GB)是有限制的。 Windows 7绝对不应该在默认情况下使用该文件系统。
同样在32位系统上,您可以使用CreateFileMapping/MapViewOfFile一次性映射到内存中的文件大小有限制。但是,fstream在内部不使用CreateFileMapping/MapViewOfFile,因此文件大小没有限制(除文件系统限制外)。即使使用CreateFileMapping,您也可以将较大文件的部分映射到内存中,因此除了文件系统强加的限制外,没有其他限制。
哦,如果fstream对文件大小没有限制,那么对我来说这将是一个好消息,因为我不知道如何将我的文件分解成多块以避免4GB的限制。谢谢 – user1285419 2012-04-09 00:49:02
“默认情况下,Windows 7绝对不应该使用该文件系统。” - 这个陈述太宽泛了。但是,由于该问题涉及40GB或60GB文件,因此可能不在USB闪存上。 – 2012-04-09 00:54:38
@Windowsprogrammer:exFAT – SigTerm 2012-04-09 09:54:39
- 1. C++ fstream读取和写入文件
- 2. fstream |读写操作既不好也不坏|读写大文件
- 3. 在Linux上,2G是coredump文件的限制大小吗?
- 4. std :: fstream在Windows上读取文件C++
- 5. C++,同时读写二进制文件
- 6. 使用fstream从C++的* .txt文件读取数字使用fstream
- 7. 用fstream编写的文件有什么权限?
- 8. 是否有任何限制Ipa文件
- 9. MBTiles文件是否有大小限制?
- 10. 是否有XIB文件限制?
- 11. C#测试用户是否有写入文件夹的权限
- 12. 是否有限制bcache的回写率
- 13. fstream文件无法读取
- 14. FStream读取txt文件
- 15. 正在重写fstream文件
- 16. 不能写入fstream文件
- 17. 强制StarTeam检出具有读写权限的文件?
- 18. 是否可以同时读写文件?
- 19. C++什么fstream写入函数写入文件(coden在后)
- 20. C++ fstream多输入文件
- 21. 具有只读权限复制文件
- 22. 在C++中读取和写入二进制文件
- 23. 在C++中读取和写入文件
- 24. 如何读取和写入无符号字符到C++中的fstream文件?
- 25. Ml文件读取限制
- 26. C++ - 读写没有libpcap的pcapng文件
- 27. 制造文件中变量的大小是否有限制
- 28. 张量流的csv文件读取器中的num_epochs是否有限制string_input_producer()?
- 29. 是否有可以用scipy.io.readsav读取的最大文件大小限制?
- 30. Wordpress - wp_list_pages - 是否有限制?
可能的重复http://stackoverflow.com/questions/301995/write-large-file – 2012-04-08 22:18:15
我认为由凯里格雷戈里给出的链接回答2GByte文件限制问题。为什么没有办法让你检查数字是否正确写入?您可以通过编写0到2,147,483,647(所有正整数32位整数)序列来测试,而不是编写随机数字,这将是一个8GB文件,然后再读回。 – gbulmer 2012-04-08 23:36:12