Ce face File.create
create() creează fișierul dacă nu există. Dacă există deja, nu se întâmplă nimic: conținutul rămâne neschimbat. Cu exclusive: true, un fișier existent produce o eroare (util când vrei să fii sigur că fișierul este nou).
Cu recursive: true, directoarele lipsă din cale sunt create și ele: File('a/b/c.txt').create(recursive: true) creează a, a/b și fișierul gol c.txt. createSync este varianta sincronă.
De cele mai multe ori nu ai nevoie de create: writeAsString creează singur fișierul. create este util pentru fișiere goale (marcaje, fișiere de blocare) sau pentru directoarele intermediare.
Parametri
| Parametru | Descriere |
|---|---|
recursive |
true creează și directoarele lipsă. |
exclusive |
true aruncă eroare dacă fișierul există deja. |
Ce returnează
Future<File> cu fișierul (asincron) sau nimic (Sync).
Exemple
Exemplul 1: Fișier în directoare care nu există
import 'dart:io';
Future<void> main() async {
final f = await File('arhiva/2026/octombrie/note.txt').create(recursive: true);
print(await f.exists());
print(await f.length());
print(Directory('arhiva/2026').existsSync());
}
Rezultat
true
0
true
Exemplul 2: create nu șterge conținutul; exclusive refuză fișierele existente
import 'dart:io';
void main() {
final f = File('date.txt')..writeAsStringSync('important');
f.createSync();
print(f.readAsStringSync());
try {
f.createSync(exclusive: true);
} on FileSystemException catch (eroare) {
print('exclusive: ${eroare.osError?.message}');
}
}
Rezultat
important
exclusive: File exists
Greșeli frecvente
- Fără
recursive: true, crearea unui fișier într-un director inexistent aruncăPathNotFoundException. - Crezi că
creategolește un fișier existent. Nu îl atinge; pentru golire scriewriteAsString('').
Comenzi înrudite
File.exists: Verifică dacă fișierul există pe disc; existsSync returnează direct true sau false.Directory.create: create face un director nou (și părinții lui, cu recursive: true); delete șterge directorul, cu tot conținutul dacă e recursiv.File.writeAsString: Scrie un text într-un fișier: îl creează dacă nu există și îl suprascrie; cu mode: FileMode.append adaugă la final.