File.create în Dart

Creează un fișier gol; cu recursive: true creează și directoarele lipsă de pe cale.

Sintaxă
Future<File> create({bool recursive = false, bool exclusive = false})
void createSync({bool recursive = false, bool exclusive = false})

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ă create golește un fișier existent. Nu îl atinge; pentru golire scrie writeAsString('').

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.