Qt, C ++ 'da bir klasör olup olmadığını kontrol etme (ve klasörler oluşturma)


153

Qt'de, belirli bir klasörün geçerli dizinde olup olmadığını nasıl kontrol edebilirim?
Eğer yoksa, nasıl boş bir klasör oluşturabilirim?

Yanıtlar:


225

"Klasör" adlı bir dizinin olup olmadığını kontrol etmek için şunu kullanın:

QDir("Folder").exists();

"Klasörüm" adlı yeni bir klasör oluşturmak için şunu kullanın:

QDir().mkdir("MyFolder");

1
Bu cevap @ Petrucio'nun cevabı ile nasıl karşılaştırılır? Bunu dokümanlardan çıkaramıyorum.
Jonas G. Drange

1
Neden statik değil? QDir::exists("absolutepath")veQDir::mkdir(""absolutepath")
yalov

@yalov - statik olmayanlarla çarpışacağı için QDir::mkdir("relative_path"). Her iki aşırı yüke sahip olmak mümkün değildir.
Tomasz Gandor

5
@ JonasG.Drange Bu yanıt karmaşık / yol / yapı / ile / ara / klasörlerde ara klasörler oluşturmaz. Cevabım objektif olarak daha iyi; daha az oy almasının nedeni, bundan iki yıl sonra yayınlanmış olmasıdır.
Petrucio

152

Hem var olup olmadığını kontrol etmek hem de aracılar dahil olmak üzere var olmadığını oluşturmak için:

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

12

QDir.mkpath () yöntemini kullandığınızda, yol zaten varsa true değerini döndürür, diğer yandan yol zaten varsa QDir.mkdir () işlevi false değerini döndürür. Yani programınıza bağlı olarak hangisinin daha uygun olduğunu seçmeniz gerekir.

Qt Belgeleri hakkında daha fazla bilgi edinebilirsiniz


0

Boş bir klasöre ihtiyacınız varsa, boş bir klasör alana kadar döngü yapabilirsiniz

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

Bu durumda, numara içeren bir klasör adı alırsınız.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.