我有一个巨大的二进制文件,它是2148181087字节(> 2gb)
我正在尝试fopen (file, "r")
并且
无法打开:xyz文件(也是值 大数据存储在数据类型中)
我在手册页上看到当文件大小>收到EOVERFLOW错误时2GB。
奇怪的是,我使用了一个不同的输入文件,它几乎与第一个文件2142884400字节(也是> 2gb)一样大,fopen
可以正常工作。
fopen
的文件大小是否有任何中断,还是有其他方法可以解决这个问题?
答案 0 :(得分:6)
截止值为2GB,与您的想法相反,不 2,000,000,000(2x1000 3 )。
它是2,147,483,648(2x1024 3 )。所以你的第二个文件的大小实际上小于2GB。
在计算机领域,2GB,在硬盘制造商的脑海中只有2,000,000,000,因此他们可以说他们的磁盘比实际大:-) - 它让他们说他们的磁盘实际上是2.1GB。答案 1 :(得分:5)
“解决此问题的替代方法”取决于您使用的操作系统/库。
对于GNU C库,you can use fopen64
代替fopen
;它使用64位文件句柄(还有一个宏让fopen
使用64位文件句柄。)
对于Windows,您可能必须切换到Win32文件管理API,您可以使用CreateFile
。