2013-03-08 18 views

cevap

6

Basit kodu: Alternatif

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

Bu dizinlerdeki dosya izinlerini nasıl belirlediğinizi merak ediyorum. Ebeveynlerden miras kalan bir şekilde görünmezler. – sager89

3

:

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

Veya:

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

Recursive demektir dosya veya yol yoksa, o zaman olacak o yaratılmış olmak. Bakınız: https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart-io.File#id_create

DÜZENLEME: Bu şekilde yeni dizinin çağrılması gerekmez! Bunu seçerseniz eş zamanlı olarak da yapabilirsiniz:

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

Bu temelde, 'CreateSync' yerine 'create' kullanılmasının ayırt edilmesiyle @JuniperBelmont'unkiyle aynı cevaptır. Async API'sini kullanmak, son zamanlardaki tartışmaların özellikle zaman harcayan işlemleri içermeyen eylemler için gösterildiğinden daha etkili değildir (tam tartışma: https://groups.google.com/a/dartlang.org/forum/#! topic/misc/uWy-rO5sz_k) –

+0

Buraya ulaşmaya çalıştığım fark, varolan olmayan dizinleri oluşturmak için yeni Dizini çağırmanıza gerek yok. Dosya üzerindeki yaratma yöntemini, true'un özyineli argümanı ile çağırmak sizin için bunu yapar. Her neyse, biraz daha temiz görünüyordu – willsquire

+0

Haha, geliştirilmiş! – willsquire

İlgili konular