2013-03-08 13 views

Trả lời

6

mã đơn giản:

import 'dart:io'; 

void createFileRecursively(String filename) { 
    // Create a new directory, recursively creating non-existent directories. 
    new Directory.fromPath(new Path(filename).directoryPath) 
     .createSync(recursive: true); 
    new File(filename).createSync(); 
} 

createFileRecursively('foo/bar/baz/bleh.html'); 
+0

Tôi muốn tìm hiểu cách bạn chỉ định quyền đối với tệp trên các thư mục đó. Nó không xuất hiện mà họ nhất thiết phải thừa hưởng từ cha mẹ. – sager89

3

Hoặc:

new File('path/to/file').create(recursive: true); 

Hoặc:

new File('path/to/file').create(recursive: true) 
.then((File file) { 
    // Stuff to do after file has been created... 
}); 

đệ quy có nghĩa là nếu các tập tin hoặc đường dẫn không tồn tại, sau đó nó sẽ được tạo ra. Xem: https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart-io.File#id_create

CHỈNH SỬA: Cách này Thư mục mới không cần phải được gọi! Bạn cũng có thể thực hiện việc này theo cách đồng bộ nếu bạn chọn:

new File('path/to/file').createSync(recursive: true); 
+0

Về cơ bản, câu trả lời này giống với câu trả lời từ @JuniperBelmont với sự phân biệt 'create' được sử dụng thay cho' createSync'. Sử dụng API async không phải lúc nào cũng hiệu quả hơn vì một cuộc thảo luận gần đây cho thấy đặc biệt đối với hành động không liên quan đến hoạt động tốn thời gian (thảo luận đầy đủ: https://groups.google.com/a/dartlang.org/forum/#! topic/misc/uWy-rO5sz_k) –

+0

Sự khác biệt mà tôi đang cố gắng thực hiện ở đây là bạn không cần phải gọi Directory mới để tạo các thư mục không tồn tại. Đơn giản chỉ cần gọi phương thức create trên File với đối số đệ quy của true cho nó. Dù sao, tôi nghĩ rằng nó trông sạch hơn một chút – willsquire

+0

Haha, được cải thiện! – willsquire