c - 是否可以在没有 fseek() 和系统调用的情况下检查文件是否为空?

标签 c file fseek

基本上只是标题。我正在尝试检查文件是否为空。问题是,这个文件在几天内将变得绝对巨大(~1GB+),我觉得

fseek(fp,0,SEEK_END);
if(ftell(fp)==0){//init file}
rewind(fp);
//actually read the file 

时间成本很高,因为您必须遍历整个文件。我也不想使用系统调用,因为我通常使用 Java,并尝试尽可能独立于平台工作(即不必为每个平台重写它,而只需重新编译它)。如果这根本不是什么问题,并且 fseek()...可以轻松处理这些文件大小,请告诉我,但我认为这很耗时。

最佳答案

如果不进行系统调用,则无法对文件执行任何操作。

但是你为什么不想进行系统调用呢?或者您想避免调用名为 system() 的函数吗?

使用 stat() 或 stat() (取决于您是否已经有打开的文件描述符)可能是检查文件是否为空的最佳且最快的方法。并且它不会改变文件的状态。

关于c - 是否可以在没有 fseek() 和系统调用的情况下检查文件是否为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40300593/

相关文章:

不使用数组将十进制转换为二进制

c - Linux内核定时器函数传递自定义指针数据

c++ - C++ 中字符串流与文件 I/O 流的性能对比

c - 为什么 fseek 永远不会返回 -1

c - fseek 传递负偏移量和 SEEK_CUR

c - 对包含零件列表的文件进行 fseek 和 fread

c - 在C中实现Linkedlist时,head没有被设置为NULL

C:string 在 malloc 和 strcpy 之间被损坏

c - 生成迭代的程序

ruby - 检查文件是否包含特定单词