Проверка существования папки (и создание папок) в Qt, C ++


153

В Qt как проверить, существует ли данная папка в текущем каталоге?
Если его не существует, как мне тогда создать пустую папку?

Ответы:


225

Чтобы проверить, существует ли каталог с именем «Папка», используйте:

QDir("Folder").exists();

Чтобы создать новую папку с именем «MyFolder», используйте:

QDir().mkdir("MyFolder");

1
Как этот ответ сравнивается с ответом @ Petrucio? Я не могу вывести это из документов.
Джонас Г. Дрейндж

1
Почему это не статично? QDir::exists("absolutepath")иQDir::mkdir(""absolutepath")
Ялов

@yalov - потому что это будет сталкиваться с нестатичным QDir::mkdir("relative_path"). Не возможно иметь обе перегрузки.
Томаш Гандор

5
@ JonasG.Drange Этот ответ не создает промежуточные папки в сложной / путь / структура / с / промежуточные / папки. Мой ответ объективно лучше; причина, по которой у него меньше голосов, заключается в том, что он был опубликован через два года после этого.
Петруччо

152

Чтобы проверить, существует ли он, и создайте его, включая посредников:

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

12

Когда вы используете QDir.mkpath (), он возвращает true, если путь уже существует, с другой стороны, QDir.mkdir () возвращает false, если путь уже существует. Таким образом, в зависимости от вашей программы вы должны выбрать, что подходит лучше.

Вы можете увидеть больше на Qt Documentation


0

Если вам нужна пустая папка, вы можете зацикливаться, пока не получите пустую папку

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

В этом случае вы получите имя папки с номером.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.