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?

Jawaban:


225

Untuk memeriksa apakah direktori bernama "Folder" ada gunakan:

QDir("Folder").exists();

Untuk membuat folder baru bernama "MyFolder" gunakan:

QDir().mkdir("MyFolder");

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(".");

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


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.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.