web-dev-qa-db-ja.com

ファイルが存在するかどうか、Win32プログラムを使用していないかどうかを確認するにはどうすればよいですか?

Win32プログラムを使用してファイルが存在するかどうかを確認するにはどうすればよいですか? Windows Mobileアプリで働いています。

66
Krishnan

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]);
   }
}
23
Preet Sangha

GetFileAttributes を使用して、ファイルシステムオブジェクトが存在し、ディレクトリではないことを確認します。

BOOL FileExists(LPCTSTR szPath)
{
  DWORD dwAttrib = GetFileAttributes(szPath);

  return (dwAttrib != INVALID_FILE_ATTRIBUTES && 
         !(dwAttrib & FILE_ATTRIBUTE_DIRECTORY));
}

CのWindowsにディレクトリが存在するかどうかをどのように確認しますか?

190
Zach Burlingame

関数 GetFileAttributes を使用できます。ファイルが存在しない場合は、0xFFFFFFFFを返します。

32
codaddict

単純にどうですか:

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

別のオプション: 'PathFileExists'

しかし、おそらくGetFileAttributesで行くでしょう。

7
Adrian McCarthy

ファイルを開こうとすることができます。失敗した場合、ほとんどの時間に存在しないことを意味します。

1
fanzhou