Ü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?

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

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

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


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.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.