File în Dart

Clasa File reprezintă un fișier de pe disc prin calea lui; cu ea citești, scrii, copiezi și ștergi fișiere.

Sintaxă
import 'dart:io';

File(String path)
String get path

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) sau create îl creează.
  • Folosești dart:io într-o aplicație Flutter web: biblioteca nu există în browser și programul nu pornește.
  • Uiți await la metodele asincrone: primești un Future, 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.