2013-03-08 9 views

risposta

6

codice semplice:

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

Sarei curioso di sapere come specificare i permessi dei file su quelle directory. Non sembra che ereditino necessariamente dal genitore. – sager89

3

alternativa:

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

Oppure:

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

ricorsivo significa che se il file o il percorso non esiste, allora sarà essere creato. Vedi: https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart-io.File#id_create

MODIFICA: In questo modo non è necessario chiamare la nuova directory! Puoi anche farlo in modo sincrono se lo desideri:

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

Questa è fondamentalmente la stessa risposta di @JuniperBelmont con la distinzione che 'create' è usato al posto di' createSync'. L'utilizzo dell'API asincrona non è sempre più efficiente in quanto una discussione recente ha mostrato in particolare un'azione che non comporta operazioni che richiedono molto tempo (discussione completa: https://groups.google.com/a/dartlang.org/forum/#! topic/misc/uWy-rO5sz_k) –

+0

La differenza che stavo cercando di ottenere qui è che non è necessario chiamare la nuova Directory per creare le directory inesistenti. Semplicemente chiamando il metodo create su File con l'argomento ricorsivo di true lo fa per te. Ad ogni modo, ho pensato che fosse un po 'più pulito – willsquire

+0

Haha, migliorato! – willsquire

Problemi correlati