我想找到在标准C++11、14、17或C中检查文件是否存在的最快方法。我有数千个文件,在对它们进行任何操作之前,我需要检查它们是否都存在。在下面的函数中,可以用什么代替/* SOMETHING */
?
inline bool exist(const std::string& name)
{
/* SOMETHING */
}
CFileStatus FileStatus;
BOOL bFileExists = CFile::GetStatus(FileName,FileStatus);
其中FileName
是表示您要检查是否存在的文件的字符串
检测 Windows 中是否存在一个文件。
bool DoesExistFile(std::wstring filePath)
{
bool result = true;
HANDLE fileHandle = CreateFile(
filePath.c_str(),
GENERIC_READ,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
if ((fileHandle != NULL) && (fileHandle != INVALID_HANDLE_VALUE))
CloseHandle(fileHandle);
else
{
DWORD error = GetLastError();
if ((error == ERROR_FILE_NOT_FOUND) || (error == ERROR_PATH_NOT_FOUND))
result = false;
}
return result;
}
GetFileAttributes
(参见 迷信:为什么 GetFileAttributes 是老手测试文件存在的方法?)。 - IInspectablestat
和GetFileAttributes
函数,但它们都不起作用。 - Juan Carlos虽然有几种方法可以实现这个目标,但最有效的解决方案可能是使用fstream的预定义方法之一,例如good()。使用此方法,您可以检查您指定的文件是否存在。
fstream file("file_name.txt");
if (file.good())
{
std::cout << "file is good." << endl;
}
else
{
std::cout << "file isnt good" << endl;
}
希望这对你有用。
git push
命令可能不会在初始脏检查后再次确认您是否触及了工作树。 - millimoose