Directory.current în Dart

Directorul curent al programului, față de care se interpretează căile relative; se poate și schimba.

Sintaxă
static Directory get current
static set current(dynamic path)

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.