2012-03-09 32 views
8

Tôi có vấn đề với việc tạo ra các dir với Qt. Tôi muốn tạo một thư mục trong tài liệu, vì vậy, tôi thực hiện một số điều như sau:QDir mkdir với absolutepath

QString path("C:/Users/Me/Documents/MyApp/profiles/"); 
Qdir dir = QDir::root(); 
dir.mkdir(path); 

Nhưng điều đó không hiệu quả! Tôi đã thử nghiệm với "/" và "\" cho các máy tách nhưng trong hai trường hợp không hoạt động.

Tôi có thể tạo thư mục của mình bằng cách nào?

Cảm ơn bạn.

+0

u có giải pháp .. – shofee

Trả lời

11

Cố gắng sử dụng QDir::mkpath như dir.mkpath(path);

2

QDir dir = QDir::root() tạo ra một thể hiện của QDir cấu hình để trỏ đến thư mục gốc và các bản sao mà thiết để dir. Để tránh sao chép và mã phụ, bạn có thể sử dụng QDir dir(QDir::root);. Trên Windows, nó sẽ trỏ đến thư mục gốc của ổ đĩa hệ thống, thường là C:\.

dir.mkdir(path); sẽ cố gắng tạo thư mục con có tên path trong thư mục hiện được định cấu hình (gốc). Phương thức này dự kiến ​​một tên thư mục duy nhất và không phải là một đường dẫn đầy đủ. Nó cũng trả về kết quả bool mà bạn nên kiểm tra.

Bạn có thể muốn gọi số dir.mkpath(path) sẽ cố gắng tạo thư mục con được chỉ định cùng với tất cả các thư mục mẹ cần thiết dẫn đến nó. Một lần nữa, bạn nên kiểm tra kết quả để xem nó có thành công hay không.

23

Bạn có thể làm điều này:

QDir dir(path); 
if (!dir.exists()){ 
    dir.mkdir("."); 
} 
+0

Gọn gàng, cảm ơn vì lừa! –

+1

Tốt hơn là dir.mkpath (".") Như đã nêu ở đây: https://stackoverflow.com/a/11517874/4706859 nếu không, nếu một số thư mục phải được tạo, cuộc gọi của bạn tới dir.mkdir() sẽ không thành công. Cũng lưu ý rằng không cần thử nghiệm cho sự tồn tại của thư mục trừ khi bạn thực sự có ý định làm điều gì đó với kết quả của nó. Một thử nghiệm cho sự thành công của dir.mkpath(), mặt khác, có thể hữu ích. –

Các vấn đề liên quan