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));
}
関数 GetFileAttributes
を使用できます。ファイルが存在しない場合は、0xFFFFFFFF
を返します。
単純にどうですか:
#include <io.h>
if(_access(path, 0) == 0)
... // file exists
別のオプション: 'PathFileExists' 。
しかし、おそらくGetFileAttributes
で行くでしょう。
ファイルを開こうとすることができます。失敗した場合、ほとんどの時間に存在しないことを意味します。