Ce face FileSystemEntity
FileSystemEntity este clasa părinte a lui File, Directory și Link. Membrii comuni (path, parent, exists, delete, rename, stat, absolute) sunt definiți aici. Directory.list() returnează elemente de acest tip; afli tipul concret cu is File sau is Directory.
Getter-ul uri returnează calea ca Uri: o cale absolută devine file:///…, iar caracterele speciale (spațiu, diacritice) sunt codificate (%20, %C8%99). La directoare, uri se termină cu /.
Clasa are și metode statice care lucrează direct cu căi text: isFile, isDirectory, type.
Ce returnează
uri: un Uri pentru cale.
Exemple
Exemplul 1: Elemente de tipuri diferite într-o singură listă
import 'dart:io';
void main() {
Directory('poze').createSync();
File('lista.txt').writeAsStringSync('x');
final List<FileSystemEntity> elemente = [File('lista.txt'), Directory('poze')];
for (final e in elemente) {
final tip = switch (e) {
File() => 'fișier',
Directory() => 'director',
_ => 'altceva',
};
print('${e.path}: $tip, există: ${e.existsSync()}');
}
}
Rezultat
lista.txt: fișier, există: true
poze: director, există: true
Exemplul 2: Calea ca Uri
import 'dart:io';
void main() {
print(File('note.txt').uri);
print(File('teme de vară/eseu.txt').uri);
print(Directory('poze').uri);
print(File('/home/ana/Iași.txt').uri);
print(File('/home/ana/Iași.txt').uri.pathSegments.last);
}
Rezultat
note.txt
teme%20de%20var%C4%83/eseu.txt
poze/
file:///home/ana/Ia%C8%99i.txt
Iași.txt
Greșeli frecvente
- Construiești URL-uri
file://lipind text: spațiile și diacriticele rămân necodificate. Foloseșteuri.
Comenzi înrudite
FileSystemEntity.isFile: Metode statice care spun ce se află la o cale: fișier, director, link sau nimic.Directory.list: Listează fișierele și subdirectoarele unui director; cu recursive: true intră și în subdirectoare.File: Clasa File reprezintă un fișier de pe disc prin calea lui; cu ea citești, scrii, copiezi și ștergi fișiere.Directory: Clasa Directory reprezintă un director (folder) de pe disc: îl creezi, îl listezi, verifici dacă există, îl ștergi.