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.