Überprüfen, ob in Qt, C ++ ein Ordner vorhanden ist (und Ordner erstellen)

153

Wie überprüfe ich in Qt, ob ein bestimmter Ordner im aktuellen Verzeichnis vorhanden ist?
Wie erstelle ich einen leeren Ordner, wenn er nicht vorhanden ist?

Schalter
quelle

Antworten:

225

Um zu überprüfen, ob ein Verzeichnis mit dem Namen "Ordner" vorhanden ist, verwenden Sie:

QDir("Folder").exists();

Um einen neuen Ordner mit dem Namen "MyFolder" zu erstellen, verwenden Sie:

QDir().mkdir("MyFolder");
Kyle Lutz
quelle
1
Wie ist diese Antwort mit der Antwort von @ Petrucio zu vergleichen? Ich kann das nicht aus den Dokumenten ableiten.
Jonas G. Drange
1
Warum ist es nicht statisch? QDir::exists("absolutepath")undQDir::mkdir(""absolutepath")
Yalov
@yalov - weil es mit nicht statischen kollidieren würde QDir::mkdir("relative_path"). Es ist nicht möglich, beide Überlastungen zu haben.
Tomasz Gandor
5
@ JonasG.Drange Diese Antwort erstellt keine Zwischenordner in einem komplexen / Pfad / Struktur / mit / Zwischen / Ordnern. Meine Antwort ist objektiv besser; Der Grund dafür, dass es weniger positive Stimmen gibt, ist, dass es zwei Jahre nach diesem veröffentlicht wurde.
Petrucio
152

So überprüfen Sie, ob es vorhanden ist, und erstellen, wenn dies nicht der Fall ist, einschließlich Vermittlern:

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

Wenn Sie QDir.mkpath () verwenden, wird true zurückgegeben, wenn der Pfad bereits vorhanden ist. QDir.mkdir () gibt andererseits false zurück, wenn der Pfad bereits vorhanden ist. Abhängig von Ihrem Programm müssen Sie also auswählen, welches besser passt.

Weitere Informationen finden Sie in der Qt-Dokumentation

Vitor Santos
quelle
0

Wenn Sie einen leeren Ordner benötigen, können Sie eine Schleife ausführen, bis Sie einen leeren Ordner erhalten

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

In diesem Fall erhalten Sie einen Ordnernamen mit einer Nummer.

Midhun
quelle
-8

Warum noch etwas verwenden?

  mkdir(...);
matiasf
quelle