Ce face File.length
length() returnează numărul de octeți din fișier, nu de caractere: un text cu diacritice are mai mulți octeți decât litere. lastModified() returnează un DateTime cu momentul ultimei scrieri în fișier.
Ambele au variante sincrone (lengthSync, lastModifiedSync) și aruncă FileSystemException dacă fișierul nu există. Pentru mai multe informații dintr-un singur apel, vezi stat.
Ce returnează
length: Future<int>. lastModified: Future<DateTime>.
Exemple
Exemplul 1: Mărimea în octeți și în caractere
import 'dart:io';
Future<void> main() async {
const text = 'Știință și tehnică';
final f = File('titlu.txt');
await f.writeAsString(text);
print('Caractere: ${text.length}');
print('Octeți pe disc: ${await f.length()}');
}
Rezultat
Caractere: 18
Octeți pe disc: 23
Exemplul 2: Este fișierul proaspăt?
Data exactă diferă la fiecare rulare, așa că afișăm doar dacă fișierul a fost modificat în ultimul minut.
import 'dart:io';
Future<void> main() async {
final f = File('cache.json');
await f.writeAsString('{}');
final modificat = await f.lastModified();
final vechime = DateTime.now().difference(modificat);
print('Modificat în ultimul minut: ${vechime.inSeconds < 60}');
print('Tip: ${modificat.runtimeType}');
}
Rezultat
Modificat în ultimul minut: true
Tip: DateTime
Exemplul 3: Mărime afișată prietenos
import 'dart:io';
String marime(int octeti) {
if (octeti < 1024) return '$octeti B';
if (octeti < 1024 * 1024) return '${(octeti / 1024).toStringAsFixed(1)} KB';
return '${(octeti / 1024 / 1024).toStringAsFixed(1)} MB';
}
void main() {
File('mic.txt').writeAsStringSync('salut');
File('mediu.bin').writeAsBytesSync(List.filled(5000, 0));
for (final nume in ['mic.txt', 'mediu.bin']) {
print('$nume: ${marime(File(nume).lengthSync())}');
}
}
Rezultat
mic.txt: 5 B
mediu.bin: 4.9 KB
Greșeli frecvente
- Folosești
lengthca număr de caractere al textului. Este în octeți; pentru caractere citește textul și folosește.lengthpeString. - Scrii
f.lengthfără paranteze: obții metoda, nu numărul. Apeleazăawait f.length().
Comenzi înrudite
File.stat: Returnează dintr-un singur apel informațiile despre fișier: tip, mărime, date de modificare și permisiuni.File.readAsBytes: readAsBytes citește un fișier ca octeți (imagini, arhive, orice fișier binar); writeAsBytes scrie octeți.File: Clasa File reprezintă un fișier de pe disc prin calea lui; cu ea citești, scrii, copiezi și ștergi fișiere.