Ce face File
File('note.txt') din dart:io creează un obiect care indică spre un fișier. Crearea obiectului nu atinge discul: fișierul poate să nu existe încă. Abia metodele lui (readAsString, writeAsString, exists, delete…) lucrează efectiv cu fișierul.
Getter-ul path returnează exact calea dată la creare. O cale relativă (note.txt, date/elevi.csv) este interpretată față de directorul curent al programului (Directory.current).
Aproape fiecare operație are două forme: una asincronă, care returnează un Future și se folosește cu await (readAsString), și una sincronă, cu sufixul Sync (readAsStringSync), care blochează programul până termină. dart:io nu există în browser (Flutter web), doar în programe de consolă, pe server și în aplicațiile mobile/desktop.
Parametri
| Parametru | Descriere |
|---|---|
path |
Calea fișierului, relativă sau absolută. |
Exemple
Exemplul 1: Obiectul File și calea lui
Obiectul există chiar dacă fișierul nu există; existsSync verifică discul.
import 'dart:io';
void main() {
final f = File('note.txt');
print(f.path);
print(f.existsSync());
f.writeAsStringSync('Ana: 10\n');
print(f.existsSync());
print(File('date/elevi.csv').path);
}
Rezultat
note.txt
false
true
date/elevi.csv
Exemplul 2: Scriere și citire, asincron
import 'dart:io';
Future<void> main() async {
final jurnal = File('jurnal.txt');
await jurnal.writeAsString('Luni: am învățat Dart.\nMarți: fișiere.\n');
final continut = await jurnal.readAsString();
print(continut);
print('Fișierul ${jurnal.path} are ${await jurnal.length()} octeți.');
}
Rezultat
Luni: am învățat Dart.
Marți: fișiere.
Fișierul jurnal.txt are 44 octeți.
Greșeli frecvente
- Crezi că
File('x.txt')creează fișierul. Doar scrierea (writeAsString) saucreateîl creează. - Folosești
dart:ioîntr-o aplicație Flutter web: biblioteca nu există în browser și programul nu pornește. - Uiți
awaitla metodele asincrone: primești unFuture, nu conținutul, iar scrierea poate să nu fi terminat când citești.
Comenzi înrudite
File.readAsString: Citește tot conținutul unui fișier text într-un String (implicit UTF-8); varianta Sync blochează până termină.File.writeAsString: Scrie un text într-un fișier: îl creează dacă nu există și îl suprascrie; cu mode: FileMode.append adaugă la final.File.exists: Verifică dacă fișierul există pe disc; existsSync returnează direct true sau false.Directory: Clasa Directory reprezintă un director (folder) de pe disc: îl creezi, îl listezi, verifici dacă există, îl ștergi.