Ce face Directory.current
Directory.current (static) returnează directorul de lucru curent: de obicei directorul din care ai pornit programul în terminal, nu neapărat cel în care se află fișierul .dart. Căile relative, ca File('note.txt'), sunt căutate acolo.
Prin atribuire (Directory.current = 'date';) schimbi directorul curent pentru tot programul; poți da un String sau un Directory. Schimbarea afectează toate căile relative folosite după aceea.
Pentru calea scriptului care rulează, folosește Platform.script.
Ce returnează
Un Directory cu calea absolută a directorului curent.
Exemple
Exemplul 1: Căile relative pornesc din directorul curent
Calea completă diferă de la o rulare la alta (exemplul rulează într-un director temporar), așa că verificăm doar legătura dintre ele.
import 'dart:io';
void main() {
final curent = Directory.current;
print(curent.isAbsolute);
File('salut.txt').writeAsStringSync('Salut!');
print(File('${curent.path}/salut.txt').readAsStringSync());
print(File('salut.txt').absolute.path == '${curent.path}/salut.txt');
}
Rezultat
true
Salut!
true
Exemplul 2: Schimbarea directorului curent
import 'dart:io';
void main() {
Directory('rapoarte').createSync();
final inainte = Directory.current.path;
Directory.current = 'rapoarte';
File('lunar.txt').writeAsStringSync('octombrie');
print(Directory.current.path.endsWith('rapoarte'));
Directory.current = inainte;
print(File('rapoarte/lunar.txt').readAsStringSync());
}
Rezultat
true
octombrie
Greșeli frecvente
- Crezi că fișierele relative se caută lângă fișierul
.dart. Se caută în directorul din care a fost pornit programul; rulează din alt director și nu le mai găsește. - Schimbi
Directory.currentîntr-o funcție și uiți să îl pui la loc: toate căile relative din restul programului se strică.
Comenzi înrudite
File.parent: parent dă directorul în care se află fișierul; absolute dă același fișier cu calea completă, de la rădăcină.Platform.script: Platform.script este adresa (Uri) fișierului Dart care rulează; executableArguments sunt opțiunile date mașinii virtuale Dart.Directory: Clasa Directory reprezintă un director (folder) de pe disc: îl creezi, îl listezi, verifici dacă există, îl ștergi.