Comprobando si existe una carpeta (y creando carpetas) en Qt, C ++

153

En Qt, ¿cómo verifico si existe una carpeta determinada en el directorio actual?
Si no existe, ¿cómo puedo crear una carpeta vacía?

Cambiar
fuente

Respuestas:

225

Para verificar si existe un directorio llamado "Carpeta", use:

QDir("Folder").exists();

Para crear una nueva carpeta llamada "MyFolder" use:

QDir().mkdir("MyFolder");
Kyle Lutz
fuente
1
¿Cómo se compara esta respuesta con la respuesta de @ Petrucio? No puedo deducir esto de los documentos.
Jonas G. Drange
1
¿Por qué no es estático? QDir::exists("absolutepath")yQDir::mkdir(""absolutepath")
yalov
@yalov: porque colisionaría con elementos no estáticos QDir::mkdir("relative_path"). No es posible tener ambas sobrecargas.
Tomasz Gandor
55
@ JonasG.Drange Esta respuesta no crea carpetas intermedias en un complejo / ruta / estructura / con / intermediario / carpetas. Mi respuesta es objetivamente mejor; La razón por la que tiene menos votos positivos es porque se publicó dos años después de este.
Petrucio
152

Para verificar si existe y crear si no existe, incluidos los intermediarios:

QDir dir("path/to/dir");
if (!dir.exists())
    dir.mkpath(".");
Petrucio
fuente
12

Cuando utiliza QDir.mkpath (), devuelve verdadero si la ruta ya existe, por otro lado, QDir.mkdir () devuelve falso si la ruta ya existe. Entonces, dependiendo de su programa, debe elegir cuál se ajusta mejor.

Puedes ver más sobre la documentación de Qt

Vitor Santos
fuente
0

Si necesita una carpeta vacía, puede recorrer hasta obtener una carpeta vacía

    QString folder= QString ("%1").arg(QDateTime::currentMSecsSinceEpoch());
    while(QDir(folder).exists())
    {
         folder= QString ("%1").arg(QDateTime::currentMSecsSinceEpoch());
    }
    QDir().mkdir(folder);

Este caso obtendrá un nombre de carpeta con un número.

Midhun
fuente
-8

¿Por qué usar algo más?

  mkdir(...);
matiasf
fuente