查找以某个字符串开头的文件

时间:2015-08-17 12:28:30

标签: c++ file

我想知道如何检查文件是否存在:

例如我有很多文件:

Boba.txt
James.txt
Jamy.txt
Boby.txt 

如何检查以Bob开头的文件是否存在?

3 个答案:

答案 0 :(得分:2)

注意,我假设您使用的是Windows系统并且文件位于同一目录中。

您可以使用FindFirstFileFindNextFile函数遍历目录。前缀可以包含在搜索字词中。

示例

std::string strSearch = "C:\\Some Directory\\Bob*";
WIN32_FIND_DATAA ffd;
HANDLE hFind = FindFirstFileA(strSearch .c_str(), &ffd);

do
{
    std::string strFile = ffd.cFileName;
}
while (FindNextFileA(hFind, &ffd) != 0);

正确的错误检查以及如何处理目录留给读者练习。

答案 1 :(得分:0)

假设您需要在C ++中执行此操作,boost::filesystem库可能非常有用。在这种情况下,您的问题可以通过发布的here解决方案的变体来解决。在您的情况下,您不需要std::multimap,但可以使用简单的std::string::find

答案 2 :(得分:0)

您可以使用fopen打开一个只读"r"的文件。如果文件不存在,fopen将返回NULL指针。您可以为程序所需的任何文件执行此操作。

#include <cstdio>
int main ()
{
  FILE **pFile;
  pFile[0] = fopen ("Boba.txt","r");
  pFile[1] = fopen ("Boby.txt","r");
  if (pFile[0]!=NULL || pFile[1]!=NULL){
    printf("File starting with \"bob\" exists.");
  }
  else printf("File does not exist."); 
  return 0; 
}