File.stat în Dart

Returnează dintr-un singur apel informațiile despre fișier: tip, mărime, date de modificare și permisiuni.

Sintaxă
Future<FileStat> stat()
FileStat statSync()

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ă stat aruncă la fișier lipsă și nu verifici type. Compară cu FileSystemEntityType.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.