saber existe comprobar archivo c file directory file-exists

comprobar - Manera portátil para verificar si existe un directorio



saber si existe un archivo c# (3)

Me gustaría comprobar si existe un directorio determinado. Sé cómo hacer esto en Windows:

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

y Linux:

DIR* dir = opendir("mydir"); if (dir) { /* Directory exists. */ closedir(dir); } else if (ENOENT == errno) { /* Directory does not exist. */ } else { /* opendir() failed for some other reason. */ }

Pero necesito una forma portátil de hacer esto ... ¿Hay alguna manera de verificar si existe un directorio sin importar el sistema operativo que estoy usando? Tal vez C manera estándar de la biblioteca?

Sé que puedo usar las directivas de los preprocesadores y llamar a esas funciones en diferentes sistemas operativos, pero esa no es la solución que estoy pidiendo.

TERMINO CON ESTO, AL MENOS POR AHORA:

#include <sys/types.h> #include <sys/stat.h> #include <stdio.h> #include <stdlib.h> int dirExists(const char *path) { struct stat info; if(stat( path, &info ) != 0) return 0; else if(info.st_mode & S_IFDIR) return 1; else return 0; } int main(int argc, char **argv) { const char *path = "./TEST/"; printf("%d/n", dirExists(path)); return 0; }


Puede usar GTK glib para abstraerse de las cosas del sistema operativo.

glib proporciona una función g_dir_open() que debería hacer el truco.


Utilice boost::filesystem , que le dará una forma portátil de hacer ese tipo de cosas y abstraer todos los detalles desagradables para usted.


stat() funciona en Linux., UNIX y Windows:

#include <sys/types.h> #include <sys/stat.h> struct stat info; if( stat( pathname, &info ) != 0 ) printf( "cannot access %s/n", pathname ); else if( info.st_mode & S_IFDIR ) // S_ISDIR() doesn''t exist on my windows printf( "%s is a directory/n", pathname ); else printf( "%s is no directory/n", pathname );