我正在使用visual c ++从某个目录中读取文件。我如何检查该文件是否存在。 如果我使用:
file.open("file.txt", ios::in);
其中file是fstream的成员。如果文件不存在,则创建文件。 如何检查该文件是否存在。 谢谢
答案 0 :(得分:4)
如果该文件尚未存在,您的代码会创建 no 文件(在大多数系统上,假设file
为std::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
}