Ce face File.stat
stat() returnează un FileStat cu câmpurile type (fișier, director, link sau notFound), size (octeți), modified, accessed, changed (date DateTime) și mode (permisiunile, ca număr). modeString() afișează permisiunile în stilul Unix, de exemplu rw-r--r--.
Spre deosebire de length(), stat() nu aruncă eroare dacă fișierul lipsește: întoarce type == FileSystemEntityType.notFound și size -1. Există și metoda statică FileStat.stat(cale).
Ce returnează
Un FileStat (asincron, în Future, sau direct, la Sync).
Exemple
Exemplul 1: Informațiile unui fișier
Afișăm câmpurile stabile; datele de modificare diferă la fiecare rulare.
import 'dart:io';
Future<void> main() async {
final f = File('tema.txt');
await f.writeAsString('Tema la matematică');
final s = await f.stat();
print('Tip: ${s.type}');
print('Mărime: ${s.size} octeți');
print('Permisiuni: ${s.modeString()}');
print('Modificat azi: ${s.modified.day == DateTime.now().day}');
}
Rezultat
Tip: file
Mărime: 19 octeți
Permisiuni: rw-r--r--
Modificat azi: true
Exemplul 2: stat pe o cale care nu există
import 'dart:io';
void main() {
Directory('poze').createSync();
for (final cale in ['poze', 'lipsa.txt']) {
final s = File(cale).statSync();
print('$cale: ${s.type}, size=${s.size}');
}
}
Rezultat
poze: directory, size=64
lipsa.txt: notFound, size=-1
Greșeli frecvente
- Apelezi
length(),lastModified()și verifici tipul separat: trei accesări ale discului.stat()le aduce pe toate deodată. - Crezi că
stataruncă la fișier lipsă și nu verificitype. Compară cuFileSystemEntityType.notFound.
Comenzi înrudite
File.length: length dă mărimea fișierului în octeți; lastModified dă data și ora ultimei modificări.FileSystemEntity.isFile: Metode statice care spun ce se află la o cale: fișier, director, link sau nimic.File.exists: Verifică dacă fișierul există pe disc; existsSync returnează direct true sau false.