ตรวจสอบว่ามีโฟลเดอร์อยู่ (และสร้างโฟลเดอร์) ใน Qt, C ++


153

ใน Qt ฉันจะตรวจสอบว่ามีโฟลเดอร์ที่กำหนดอยู่ในไดเรกทอรีปัจจุบันได้อย่างไร?
หากไม่มีอยู่ฉันจะสร้างโฟลเดอร์ว่างได้อย่างไร

คำตอบ:


225

วิธีตรวจสอบว่ามีชื่อไดเรกทอรี "โฟลเดอร์" อยู่หรือไม่:

QDir("Folder").exists();

ในการสร้างโฟลเดอร์ใหม่ชื่อ "MyFolder" ให้ใช้:

QDir().mkdir("MyFolder");

1
คำตอบนี้เปรียบเทียบกับคำตอบของ @ Petrucio อย่างไร ฉันไม่สามารถอนุมานสิ่งนี้ได้จากเอกสาร
Jonas G. Drange

1
ทำไมมันไม่คงที่ QDir::exists("absolutepath")และQDir::mkdir(""absolutepath")
ยาโลฟ

@yalov - QDir::mkdir("relative_path")เพราะมันจะชนกับไม่คงที่ เป็นไปไม่ได้ที่จะมีทั้งโอเวอร์โหลด
Tomasz Gandor

5
@ JonasG.Drange คำตอบนี้ไม่ได้สร้างโฟลเดอร์ระดับกลางในคอมเพล็กซ์ / พา ธ / โครงสร้าง / ด้วย / ระดับกลาง / โฟลเดอร์ คำตอบของฉันดีกว่าอย่างเป็นกลาง เหตุผลที่มี upvotes น้อยเนื่องจากเป็นโพสต์สองปีหลังจากนี้
Petrucio

152

หากต้องการตรวจสอบทั้งว่ามีอยู่และสร้างหากไม่มีอยู่รวมถึงตัวกลาง:

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

12

เมื่อคุณใช้ QDir.mkpath () มันจะคืนค่าจริงหากมีเส้นทางอยู่แล้วในอีกทางหนึ่ง QDir.mkdir () จะส่งกลับค่าเท็จหากเส้นทางนั้นมีอยู่แล้ว ขึ้นอยู่กับโปรแกรมที่คุณเลือก

คุณสามารถดูเพิ่มเติมเกี่ยวกับเอกสาร Qt


0

หากคุณต้องการโฟลเดอร์ว่างคุณสามารถวนซ้ำจนกว่าคุณจะได้รับโฟลเดอร์ว่าง

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

กรณีนี้คุณจะได้รับชื่อโฟลเดอร์พร้อมหมายเลข


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.