¿Cómo podemos verificar si un archivo existe o no con el progtwig Win32?

¿Cómo podemos verificar si existe un archivo o no usando un progtwig Win32? Estoy trabajando para una aplicación de Windows Mobile.

Puede llamar a FindFirstFile .

Aquí hay una muestra que acabo de desmayar:

 #include  #include  #include  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]); } } 

Use GetFileAttributes para verificar que el objeto del sistema de archivos exista y que no sea un directorio.

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

Copiado de ¿Cómo verifica si existe un directorio en Windows en C?

Puede hacer uso de la función GetFileAttributes . Devuelve 0xFFFFFFFF si el archivo no existe.

¿Qué tal simplemente?

 #include  if(_access(path, 0) == 0) ... // file exists 

Otra opción: ‘PathFileExists’ .

Pero probablemente vaya con GetFileAttributes .

Puedes intentar abrir el archivo. Si falló, significa que no existe en la mayoría del tiempo.

Otra forma más genérica que no es 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; }