微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在C中获取大文件大小

在任何人抱怨“重复”之前,我已经非常全面地检查了,但似乎还没有干净的答案,虽然这个问题看起来很简单.

我正在寻找便携式C代码,即使文件大于4GB,也可以提供文件的大小.

通常的方法(fseek,ftell)工作正常,只要文件保持< 2GB.它在各地都得到很好的支持,所以我试图找到一些相当的东西. 不幸的是,所有编译器都不支持更新的方法(fseeko,ftello).例如,MinGW想念它(显然MSVC).此外,一些评论使我相信新的返回类型(off_t)不一定支持size> 2GB,可能需要检查一些外部参数.

MSVC不支持明确的方法(fseeko64,ftello64). MS提供了等效的_fseeki64& _ftelli64.这已经很糟糕了,但是变得更糟:一些Linux配置似乎在运行时严重支持这些功能.例如,我使用GCC 4.4的PowerPC上的Debian Squeeze将使用fseeko64生成一个“filesize”方法,该文件总是返回0(当它适用于Ubuntu64时). MinGW似乎回答了一些2GB以上的随机垃圾.

那么就便携性而言,我有点无知.如果我需要一堆#if #else,那么为什么不直接去操作系统?编译器首先详细说明方法,例如MSVC的GetFileSize().

解决方法

你说:没有便携式的方法;如果我是你,我将在Windows上使用GetFileSize和POSIX上的stat.

原文地址:https://www.jb51.cc/c/115710.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐