Sprawdzanie, czy folder istnieje (i tworzenie folderów) w Qt, C ++


153

W Qt, jak mogę sprawdzić, czy dany folder istnieje w bieżącym katalogu?
Jeśli nie istnieje, jak mogę utworzyć pusty folder?

Odpowiedzi:


225

Aby sprawdzić, czy istnieje katalog o nazwie „Folder”, użyj:

QDir("Folder").exists();

Aby utworzyć nowy folder o nazwie „MójFolder”, użyj:

QDir().mkdir("MyFolder");

1
Jak ta odpowiedź wypada w porównaniu z odpowiedzią @ Petrucio? Nie mogę tego wywnioskować z dokumentów.
Jonas G. Drange

1
Dlaczego nie jest statyczny? QDir::exists("absolutepath")iQDir::mkdir(""absolutepath")
yalov

@yalov - ponieważ kolidowałoby z niestatycznym QDir::mkdir("relative_path"). Nie można mieć obu przeciążeń.
Tomasz Gandor

5
@ JonasG.Drange Ta odpowiedź nie tworzy folderów pośrednich w złożonym / ścieżka / struktura / z / pośrednie / foldery. Moja odpowiedź jest obiektywnie lepsza; powodem, dla którego ma mniej głosów pozytywnych, jest to, że został opublikowany dwa lata po tym.
Petrucio

152

Aby zarówno sprawdzić, czy istnieje, jak i utworzyć, jeśli nie, w tym pośredników:

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

12

Kiedy używasz QDir.mkpath () zwraca true, jeśli ścieżka już istnieje, z drugiej strony QDir.mkdir () zwraca false, jeśli ścieżka już istnieje. W zależności od programu musisz wybrać, który pasuje lepiej.

Możesz zobaczyć więcej w dokumentacji Qt


0

Jeśli potrzebujesz pustego folderu, możesz zapętlić, aż uzyskasz pusty folder

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

W tym przypadku otrzymasz nazwę folderu z numerem.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.