File.delete în Dart

Șterge fișierul de pe disc (definitiv, nu în coș); aruncă eroare dacă fișierul nu există.

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

Ce face File.delete

delete() șterge fișierul. Ștergerea este definitivă: fișierul nu ajunge în coșul de gunoi. deleteSync() este varianta sincronă.

Dacă fișierul nu există, se aruncă PathNotFoundException. Dacă vrei să ștergi „dacă există”, verifică înainte cu existsSync() sau prinde excepția. Parametrul recursive contează doar pentru directoare (vezi Directory.delete).

Parametri

Parametru Descriere
recursive Folosit la directoare; pentru fișiere nu schimbă nimic.

Ce returnează

Future cu obiectul șters (asincron) sau nimic (Sync).

Exemple

Exemplul 1: Ștergerea fișierelor temporare

import 'dart:io';

Future<void> main() async {
  for (final nume in ['tmp1.txt', 'tmp2.txt', 'pastreaza.txt']) {
    await File(nume).writeAsString('x');
  }
  for (final nume in ['tmp1.txt', 'tmp2.txt']) {
    await File(nume).delete();
    print('Șters: $nume');
  }
  for (final nume in ['tmp1.txt', 'tmp2.txt', 'pastreaza.txt']) {
    print('$nume există: ${File(nume).existsSync()}');
  }
}

Rezultat

Șters: tmp1.txt
Șters: tmp2.txt
tmp1.txt există: false
tmp2.txt există: false
pastreaza.txt există: true

Exemplul 2: Ștergerea unui fișier care nu există

import 'dart:io';

void stergeDacaExista(String cale) {
  final f = File(cale);
  if (f.existsSync()) {
    f.deleteSync();
    print('$cale: șters');
  } else {
    print('$cale: nu exista');
  }
}

void main() {
  try {
    File('fantoma.txt').deleteSync();
  } on PathNotFoundException catch (eroare) {
    print('Eroare: ${eroare.message}');
  }
  File('cache.dat').writeAsStringSync('...');
  stergeDacaExista('cache.dat');
  stergeDacaExista('cache.dat');
}

Rezultat

Eroare: Cannot delete file
cache.dat: șters
cache.dat: nu exista

Greșeli frecvente

  • Testezi un program de ștergere direct pe fișiere reale: nu există anulare. Lucrează într-un director temporar (Directory.systemTemp.createTemp).
  • Nu tratezi cazul în care fișierul lipsește și programul se oprește cu PathNotFoundException.

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.
  • Directory.createTemp: createTemp creează un director nou cu nume unic; Directory.systemTemp este directorul temporar al sistemului.