windows - poner - ¿Cómo podemos verificar si un archivo existe o no con el programa Win32?
organizar carpetas en windows 10 (7)
¿Qué tal simplemente?
#include <io.h>
if(_access(path, 0) == 0)
... // file exists
¿Cómo podemos verificar si existe un archivo o no usando un programa Win32? Estoy trabajando para una aplicación de Windows Mobile.
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;
}
Otra opción: ''PathFileExists'' .
Pero probablemente vaya con GetFileAttributes
.
Puede hacer uso de la función GetFileAttributes
. Devuelve 0xFFFFFFFF
si el archivo no existe.
Puedes intentar abrir el archivo. Si falló, significa que no existe en la mayoría del tiempo.
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 llamar a FindFirstFile
.
Aquí hay una muestra que acabo de desmayar:
#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]);
}
}