比stat()更好的方法来在dir中查找文件?

时间:2012-12-16 09:20:56

标签: c++ linux ubuntu

我正在尝试查明某些文件是否在某个文件夹中。但是,即使文件存在,我尝试查找它们的方式也不适用于某些文件夹。

bool FileExists(string strFilename) {
  struct stat stFileInfo;
  bool blnReturn;
  int intStat;
  intStat = stat(strFilename.c_str(),&stFileInfo);
  if(intStat == 0) {
    // We were able to get the file attributes
    // so the file obviously exists.
    blnReturn = true;
    printf("Found file %s\n", strFilename.c_str());
  } else {
    blnReturn = false;
    printf("Didn't find file %s\n", strFilename.c_str());
  }

  return(blnReturn);
}

当我在/ mnt / ram中安装一个目录时...它没有(有时会)在那里找到文件,但是当我使用磁盘上的另一个目录时,它总是找到文件。

有没有其他方法可以确定目录中是否存在文件?

由于

1 个答案:

答案 0 :(得分:1)

stat调用或任何其他目录/文件列表的结果取决于调用进程的权限。可能会为当前用户隐藏/mnt/ram

正如评论中所提到的,opendirreaddir是获取(递归)目录列表的惯用方法。显然,stat是成语:-)的一部分。