我尝试写一个大文件,但似乎它不适用于大于2GB的文件。 我尝试过boost :: iostreams :: file_sink。这只是增强流的限制吗?还有其他方法我可以在Win64和win32上写一个大文件吗?
我尝试写一个大文件,但似乎它不适用于大于2GB的文件。 我尝试过boost :: iostreams :: file_sink。这只是增强流的限制吗?还有其他方法我可以在Win64和win32上写一个大文件吗?
这取决于:
这也可能有所帮助: http://www.boost.org/doc/libs/1_37_0/libs/iostreams/doc/faq.html#offsets
这取决于:
这也可能有所帮助: http://www.boost.org/doc/libs/1_37_0/libs/iostreams/doc/faq.html#offsets
在Win32 / 64中,ReadFile和WriteFile可以写入大于4gb的文件。定位是通过64位_LARGE_INTEGER值完成的 SetFilePointerEx。同样可以获得所需的文件大小 GetFileSizeEx 而不是基本的GetFileSize。
在NTFS中,唯一的实际限制是卷的大小。如果要测试它,可以使用命令行创建一个虚拟文件:
fsutil文件createnew [filename] [validdatalength]
例如:
fsutil文件createnew TestFile.bin 65536000000
假设您有NTFS卷,那应该创建一个64GB的文件。