Проверка существования папки (и создание папок) в 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(".");
Petrucio
источник
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);

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

Midhun
источник
-8

Зачем использовать что-то еще?

  mkdir(...);
matiasf
источник