我们如何检查一个文件是否存在或不使用Win32程序?

我们如何检查一个文件是否存在或不使用Win32程序? 我正在为Windows Mobile应用程序工作。

你可以调用FindFirstFile

这里是我刚刚敲的一个样本:

 #include <windows.h> #include <tchar.h> #include <stdio.h> int fileExists(TCHAR * file) { WIN32_FIND_DATA FindFileData; HANDLE handle = FindFirstFile(file, &FindFileData) ; int found = handle != INVALID_HANDLE_VALUE; if(found) { //FindClose(&handle); this will crash FindClose(handle); } return found; } void _tmain(int argc, TCHAR *argv[]) { if( argc != 2 ) { _tprintf(TEXT("Usage: %s [target_file]\n"), argv[0]); return; } _tprintf (TEXT("Looking for file is %s\n"), argv[1]); if (fileExists(argv[1])) { _tprintf (TEXT("File %s exists\n"), argv[1]); } else { _tprintf (TEXT("File %s doesn't exist\n"), argv[1]); } } 

使用GetFileAttributes来检查文件系统对象是否存在并且它不是一个目录。

 BOOL FileExists(LPCTSTR szPath) { DWORD dwAttrib = GetFileAttributes(szPath); return (dwAttrib != INVALID_FILE_ATTRIBUTES && !(dwAttrib & FILE_ATTRIBUTE_DIRECTORY)); } 

复制自C: 如何检查Windows上的目录是否存在?

你可以使用函数GetFileAttributes 。 如果文件不存在,则返回0xFFFFFFFF

简单地说:

 #include <io.h> if(_access(path, 0) == 0) ... // file exists 

另一个选项: “PathFileExists” 。

但是我可能会使用GetFileAttributes

您可以尝试打开文件。 如果失败了,就意味着大部分时间都不存在。

另一种更通用的非Windows方式:

 static bool FileExists(const char *path) { FILE *fp; fpos_t fsize = 0; if ( !fopen_s(&fp, path, "r") ) { fseek(fp, 0, SEEK_END); fgetpos(fp, &fsize); fclose(fp); } return fsize > 0; }