Directory.create în Dart

create face un director nou (și părinții lui, cu recursive: true); delete șterge directorul, cu tot conținutul dacă e recursiv.

Sintaxă
Future<Directory> create({bool recursive = false})
void createSync({bool recursive = false})
Future<FileSystemEntity> delete({bool recursive = false})

Ce face Directory.create

create() creează directorul. Dacă există deja, nu se întâmplă nimic. Fără recursive: true, directorul părinte trebuie să existe; cu recursive: true se creează toată calea (a/b/c). createSync este varianta sincronă.

delete() șterge directorul. Un director care nu este gol se șterge doar cu delete(recursive: true), care șterge definitiv tot ce conține. Fără recursive, ștergerea unui director cu fișiere aruncă FileSystemException. Există și deleteSync.

Parametri

Parametru Descriere
recursive La create: creează și părinții. La delete: șterge și conținutul.

Ce returnează

create: Future<Directory>. delete: Future cu elementul șters.

Exemple

Exemplul 1: Structura unui proiect

import 'dart:io';

Future<void> main() async {
  for (final cale in ['site/css', 'site/js', 'site/imagini/2026']) {
    await Directory(cale).create(recursive: true);
  }
  final toate = Directory('site').listSync(recursive: true).map((e) => e.path).toList()..sort();
  print(toate.join('\n'));
}

Rezultat

site/css
site/imagini
site/imagini/2026
site/js

Exemplul 2: Ștergerea unui director plin

import 'dart:io';

void main() {
  Directory('temp/cache').createSync(recursive: true);
  File('temp/cache/a.dat').writeAsStringSync('x');

  try {
    Directory('temp').deleteSync();
  } on FileSystemException catch (eroare) {
    print('Fără recursive: ${eroare.osError?.message}');
  }
  Directory('temp').deleteSync(recursive: true);
  print('Mai există: ${Directory('temp').existsSync()}');
}

Rezultat

Fără recursive: Directory not empty
Mai există: false

Greșeli frecvente

  • Apelezi delete(recursive: true) pe o cale construită greșit (de exemplu goală sau .): ștergi tot directorul curent. Verifică întotdeauna calea înainte.
  • Uiți recursive: true la create pentru o cale cu mai multe niveluri și primești PathNotFoundException.

Comenzi înrudite

  • Directory: Clasa Directory reprezintă un director (folder) de pe disc: îl creezi, îl listezi, verifici dacă există, îl ștergi.
  • Directory.list: Listează fișierele și subdirectoarele unui director; cu recursive: true intră și în subdirectoare.
  • Directory.createTemp: createTemp creează un director nou cu nume unic; Directory.systemTemp este directorul temporar al sistemului.
  • File.create: Creează un fișier gol; cu recursive: true creează și directoarele lipsă de pe cale.