如何获取大于4GB的文件大小?

4

当文件大小大于4GB时,如何在C语言中获取文件大小?

ftell返回一个4字节的有符号长整型,将其限制为两个字节。stat具有off_t类型的变量,该变量也是4个字节(不确定符号),因此最多只能告诉我4GB文件的大小。

如果文件大于4GB怎么办?


5
在哪个操作系统上?这并不完全标准化。 - Andrew McGregor
1
请看此链接:https://dev59.com/DHNA5IYBdhLWcg3wQ7Yw - Drakosha
这个能帮到你吗:https://dev59.com/UHVC5IYBdhLWcg3wnCf6 - Boris
3个回答

2
在使用glibc的Linux系统上,ftell返回一个off_t类型;取决于标志位,off_t可能是32位或64位。
在Linux系统上,可以通过执行getconf LFS_CFLAGS命令获取适当的标志位以获得64位的off_t(LFS代表大文件支持)。

glibc文档显示ftell返回long int,而ftello返回off_t。http://www.gnu.org/software/libc/manual/html_node/File-Positioning.html - Gavin Smith

2
在Windows系统中,使用GetFileSize[Ex]函数来获取文件大小。

1

尝试

#define _LARGEFILE64_SOURCE 1
#define _FILE_OFFSET_BITS 64

我认为这会在某些操作系统上将 off_t 的大小增加到 64 位


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接