Verifica dell'esistenza di una cartella (e creazione di cartelle) in Qt, C ++


153

In Qt, come posso verificare se esiste una determinata cartella nella directory corrente?
Se non esiste, come posso quindi creare una cartella vuota?

Risposte:


225

Per verificare se esiste una directory denominata "Cartella", utilizzare:

QDir("Folder").exists();

Per creare una nuova cartella denominata "MyFolder" utilizzare:

QDir().mkdir("MyFolder");

1
In che modo questa risposta si confronta con la risposta di @ Petrucio? Non posso dedurlo dai documenti.
Jonas G. Drange,

1
Perché non è statico? QDir::exists("absolutepath")eQDir::mkdir(""absolutepath")
yalov il

@yalov - perché si scontrerebbe con non statico QDir::mkdir("relative_path"). Non è possibile avere entrambi i sovraccarichi.
Tomasz Gandor,

5
@ JonasG.Drange Questa risposta non crea cartelle intermedie in cartelle complesse / percorso / struttura / con / intermedio /. La mia risposta è obiettivamente migliore; il motivo per cui ha meno voti è perché è stato pubblicato due anni dopo questo.
Petrucio,

152

Per verificare se esiste e creare se non esiste, compresi gli intermediari:

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

12

Quando si utilizza QDir.mkpath () restituisce true se il percorso esiste già, d'altra parte QDir.mkdir () restituisce false se il percorso esiste già. Quindi, a seconda del programma, devi scegliere quale si adatta meglio.

Puoi vedere di più sulla documentazione di Qt


0

Se è necessaria una cartella vuota, è possibile eseguire il ciclo fino a quando non si ottiene una cartella vuota

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

In questo caso otterrai un nome di cartella con un numero.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.