【问题标题】:How do I get the file size of a large (> 4 GB) file?如何获取大 (> 4 GB) 文件的文件大小?
【发布时间】:2010-05-10 04:38:50
【问题描述】:
当文件大小大于 4gb 时,如何在 C 中获取文件的文件大小?
ftell 返回一个 4 字节的有符号长,将其限制为两个字节。 stat 有一个 off_t 类型的变量,也是 4 个字节(不确定符号),所以它最多可以告诉我 4gb 文件的大小。
如果文件大于 4 GB 怎么办?
【问题讨论】:
标签:
c
large-files
filesize
【解决方案1】:
在带有 glibc 的 Linux 上,ftell 返回一个off_t;取决于标志 off_t 可能是 32 位或可能是 64 位。
在 Linux 上,您可以通过执行 getconf LFS_CFLAGS(LFS 代表大文件支持)来获得具有 64 位 off_t 的适当标志。
【解决方案2】:
在 Windows 上,GetFileSize[Ex] 是您使用的。
【解决方案3】:
试试
#define _LARGEFILE64_SOURCE 1
#define _FILE_OFFSET_BITS 64
我认为在某些操作系统上将 off_t 的大小增加到 64 位