Ce face File.readAsLines
readAsLines citește tot fișierul și îl împarte în rânduri, ca LineSplitter: recunoaște \n, \r\n și \r, iar caracterele de sfârșit de rând nu apar în rezultat. Dacă fișierul se termină cu un rând nou, nu apare un ultim element gol.
readAsLinesSync este varianta sincronă. Ambele încarcă tot fișierul în memorie; pentru fișiere uriașe, citește rândurile pe rând dintr-un flux (openRead).
Parametri
| Parametru | Descriere |
|---|---|
encoding |
Opțional. Codificarea; implicit utf8. |
Ce returnează
Lista rândurilor (List<String>).
Exemple
Exemplul 1: Media notelor dintr-un fișier CSV
import 'dart:io';
Future<void> main() async {
await File('note.csv').writeAsString('Ana,9\nMihai,7\nIoana,10\n');
final randuri = await File('note.csv').readAsLines();
print('${randuri.length} elevi');
var suma = 0;
for (final rand in randuri) {
final [nume, nota] = rand.split(',');
suma += int.parse(nota);
print('$nume: $nota');
}
print('Media: ${(suma / randuri.length).toStringAsFixed(2)}');
}
Rezultat
3 elevi
Ana: 9
Mihai: 7
Ioana: 10
Media: 8.67
Exemplul 2: Varianta sincronă, cu rânduri goale și sfârșituri Windows
import 'dart:io';
void main() {
File('cumparaturi.txt').writeAsStringSync('lapte\r\npâine\r\n\r\nmere\r\n');
final randuri = File('cumparaturi.txt').readAsLinesSync();
print(randuri);
print(randuri.where((r) => r.isNotEmpty).toList());
}
Rezultat
[lapte, pâine, , mere]
[lapte, pâine, mere]
Greșeli frecvente
- Faci
readAsString()urmat desplit('\n')și obții un element gol la final sau\rrămas pe rânduri.readAsLinesrezolvă ambele.
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ă.LineSplitter: Împarte un text în rânduri, recunoscând \n, \r\n și \r; funcționează și pe fluxuri cu transform.File.openRead: Deschide fișierul ca flux de octeți citit pe bucăți; potrivit pentru fișiere mari, rând cu rând.