我怎样才能检查文件是否存在

时间:2012-05-20 20:00:03

标签: c file-io

  

可能重复:
  C check if file exists

我只是想知道是否有人可以指出我应该如何检查文件是否存在?在这个时间点,我计划采取以下方面的措施;

if(NULL==(fp=fopen(filepath, "r"))){

我的最终目标是找到一个解决方案,用bash替换它(只是文件查找部分)

if ! (find /dev/shm/request-summon-*-$MCEXEC_PLAYERNAME.txt > /dev/null 2>&1); then

非常感谢任何帮助,谢谢!

3 个答案:

答案 0 :(得分:1)

请查看涵盖stat()lstat()的{​​{1}}手册页。如果您获得-1作为返回值,则您尝试获取摘要信息的文件不存在,或者可能无权读取它(请参阅下面的最后一个示例,其中显示了与fstat()测试的区别文件可能存在但不允许你打开它。)

fopen()

答案 1 :(得分:0)

使用stat()或lstat()。我个人更喜欢使用lstat(),因为它告诉你目录条目是否是一个符号链接,而不是跟随链接。

为了您的最终目标,遍历目录树。你可以用opendir()和readdir()来完成这个。

答案 2 :(得分:0)

在POSIX系统上,您可以尝试打开文件并检查errno == ENOENT是否失败(返回NULL):

if ((fp = fopen(path, "r")) == NULL)
    if (errno == ENOENT)
        // file doesn't exist

没有纯粹的ISO C方式。

也可以使用statlstat,但在stat和文件打开之间创建文件时,可能会导致race condition。< / p>