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?

Przełącznik
źródło

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");
Kyle Lutz
źródło
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(".");
Petrucio
źródło
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

Vitor Santos
źródło
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.

Midhun
źródło
-8

Po co używać czegoś innego?

  mkdir(...);
matiasf
źródło