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?

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");

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(".");

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


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.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.