Memeriksa apakah ada folder (dan membuat folder) di Qt, C ++

153

Di Qt, bagaimana cara memeriksa apakah folder yang diberikan ada di direktori saat ini?
Jika tidak ada, bagaimana cara membuat folder kosong?

Beralih
sumber

Jawaban:

225

Untuk memeriksa apakah direktori bernama "Folder" ada gunakan:

QDir("Folder").exists();

Untuk membuat folder baru bernama "MyFolder" gunakan:

QDir().mkdir("MyFolder");
Kyle Lutz
sumber
1
Bagaimana jawaban ini dibandingkan dengan jawaban @ Petrucio? Saya tidak dapat menyimpulkan ini dari dokumen.
Jonas G. Drange
1
Kenapa tidak statis? QDir::exists("absolutepath")danQDir::mkdir(""absolutepath")
yalov
@yalov - karena akan bertabrakan dengan non-statis QDir::mkdir("relative_path"). Tidak mungkin memiliki kedua kelebihan.
Tomasz Gandor
5
@ JonasG. Atur Jawaban ini tidak membuat folder perantara di dalam folder / path / struktur / dengan / perantara / folder. Jawaban saya secara objektif lebih baik; alasannya memiliki kurang upvotes adalah karena telah diposting dua tahun setelah ini.
Petrucio
152

Untuk keduanya memeriksa apakah ada dan membuat jika tidak, termasuk perantara:

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

Ketika Anda menggunakan QDir.mkpath () mengembalikan true jika path sudah ada, di sisi lain QDir.mkdir () mengembalikan false jika path sudah ada. Jadi tergantung pada program Anda, Anda harus memilih mana yang lebih baik.

Anda dapat melihat lebih banyak tentang Dokumentasi Qt

Vitor Santos
sumber
0

Jika Anda memerlukan folder kosong, Anda dapat mengulang sampai Anda mendapatkan folder kosong

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

Kasus ini Anda akan mendapatkan nama folder dengan nomor.

Midhun
sumber
-8

Mengapa menggunakan yang lain?

  mkdir(...);
matiasf
sumber