【问题标题】: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 位

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 2021-07-01
      相关资源
      最近更新 更多