code

파일이 존재하는지 Win32 프로그램을 사용하지 않는지 어떻게 확인할 수 있습니까?

codestyles 2020. 11. 9. 08:10
반응형

파일이 존재하는지 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;
}

참고URL : https://stackoverflow.com/questions/3828835/how-can-we-check-if-a-file-exists-or-not-using-win32-program

반응형