Kiểm tra nếu một thư mục tồn tại (và tạo thư mục) trong Qt, C ++


153

Trong Qt, làm cách nào để kiểm tra xem một thư mục đã cho có tồn tại trong thư mục hiện tại không?
Nếu nó không tồn tại, làm thế nào để tôi tạo một thư mục trống?

Câu trả lời:


225

Để kiểm tra xem thư mục có tên "Thư mục" có tồn tại hay không, hãy sử dụng:

QDir("Folder").exists();

Để tạo một thư mục mới có tên "MyFolder", hãy sử dụng:

QDir().mkdir("MyFolder");

1
Làm thế nào để câu trả lời này so với câu trả lời của @ Petrucio? Tôi không thể suy luận điều này từ các tài liệu.
Jonas G. Drange

1
Tại sao nó không tĩnh? QDir::exists("absolutepath")QDir::mkdir(""absolutepath")
yalov

@yalov - vì nó sẽ va chạm với không tĩnh QDir::mkdir("relative_path"). Không thể có cả hai quá tải.
Tomasz Gandor

5
@ JonasG.Drange Câu trả lời này không tạo các thư mục trung gian trong một thư mục phức tạp / đường dẫn / cấu trúc / với / trung gian /. Câu trả lời của tôi là khách quan tốt hơn; Lý do nó có ít upvote là vì nó đã được đăng hai năm sau cái này.
Petrucio

152

Để cả hai kiểm tra nếu nó tồn tại và tạo nếu nó không, bao gồm các trung gian:

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

12

Khi bạn sử dụng QĐir.mkpath (), nó sẽ trả về true nếu đường dẫn đã tồn tại, mặt khác, QDir.mkdir () trả về false nếu đường dẫn đã tồn tại. Vì vậy, tùy thuộc vào chương trình của bạn, bạn phải chọn cái nào phù hợp hơn.

Bạn có thể xem thêm về Tài liệu Qt


0

Nếu bạn cần một thư mục trống, bạn có thể lặp cho đến khi bạn nhận được một thư mục trống

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

Trường hợp này bạn sẽ nhận được một tên thư mục với một số.


-8

Tại sao sử dụng bất cứ điều gì khác?

  mkdir(...);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.