2011-04-11 32 views
15

Estoy intentando crear una carpeta si no existe. Estoy usando Windows y no estoy interesado en que mi código funcione en otras plataformas.¿Cómo saber si existe una carpeta y cómo crear una carpeta?

No importa, encontré la solución. Solo estaba teniendo un problema de inclusión. La respuesta es:

#include <io.h> // For access(). 
#include <sys/types.h> // For stat(). 
#include <sys/stat.h> // For stat(). 
#include <iostream> 
#include <string> 
using namespace std; 

string strPath; 
    cout << "Enter directory to check: "; 
    cin >> strPath; 

    if (access(strPath.c_str(), 0) == 0) 
    { 
     struct stat status; 
     stat(strPath.c_str(), &status); 

     if (status.st_mode & S_IFDIR) 
     { 
     cout << "The directory exists." << endl; 
     } 
     else 
     { 
     cout << "The path you entered is a file." << endl; 
     } 
    } 
    else 
    { 
     cout << "Path doesn't exist." << endl; 
    } 
+1

¿En serio? Su pregunta inicial no tenía fragmento de código, y este código no refleja la pregunta. Fue más un "¿Qué pasa con mi código [que no publiqué]?" –

+1

Debe publicar la edición como una respuesta y aceptarla. –

+0

No me dejó publicarlo como una respuesta o un comentario. – Sara

Respuesta

12

La llamada es compatible con POSIX mkdir. It falla silenciosamente cuando el directorio ya existe.

Si está utilizando la API de Windows, entonces CreateDirectory es más apropiado.

13

Utilice boost::filesystem::exists para verificar si el archivo existe.

11

boost::filesystem::create_directories hace justamente eso: darle una ruta, y creará todos los directorios que faltan en esa ruta.

+0

Buscando en Google para el directorio 'boost check existe y luego crea C++' me trajo aquí como el primer resultado de búsqueda. Gracias. +1. – rayryeng

Cuestiones relacionadas