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


153

Як у Qt я можу перевірити, чи існує така папка у поточному каталозі?
Якщо його не існує, як мені потім створити порожню папку?

Відповіді:


225

Щоб перевірити, чи існує каталог з назвою "Папка", використовуйте:

QDir("Folder").exists();

Для створення нової папки під назвою "MyFolder" використовуйте:

QDir().mkdir("MyFolder");

1
Як ця відповідь порівнюється з відповіддю @ Петрусіо? Я не можу це зробити з документа.
Jonas G. Drange

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


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.