检查c ++中某个目录中是否存在文件

时间:2012-01-31 10:45:55

标签: c++ visual-c++ file-handling

我正在使用visual c ++从某个目录中读取文件。我如何检查该文件是否存在。 如果我使用:

file.open("file.txt", ios::in);

其中file是fstream的成员。如果文件不存在,则创建文件。 如何检查该文件是否存在。 谢谢

5 个答案:

答案 0 :(得分:4)

如果该文件尚未存在,您的代码会创建 no 文件(在大多数系统上,假设filestd::ifstream)。

由于文件系统访问中固有的并发性,没有可靠的方法来检查文件是否存在。最好的方法是打开文件进行读取访问并测试是否成功:

if (file.good()) …
// or simply
if (file) …

答案 1 :(得分:2)

ifstream my_file("file.txt");
if (my_file.good())
{
  // read away
}

答案 2 :(得分:1)

如果您使用的是Windows,则可以使用Windows API为您完成工作。这是一个简短的代码片段...您必须传递file.txt的完整路径才能成功。例如d:\ MyFolder文件\ file.txt的

    WIN32_FIND_DATA FindFileData;
HANDLE hFind = INVALID_HANDLE_VALUE;

hFind = FindFirstFile("D:\MyFolder\file.txt", &FindFileData);
GetLastError();

    if (hFind == INVALID_HANDLE_VALUE)
          // File not found

答案 3 :(得分:0)

只是调用这样的文件如果缺少则不应创建文件。它应该失败并且成功调用file.is_open()将返回false。

答案 4 :(得分:0)

您的代码可以实现以下内容:

ifstream file("text.text"); 

if(!file){
//handle error / throw exception here
}