File.exists în Dart

Verifică dacă fișierul există pe disc; existsSync returnează direct true sau false.

Sintaxă
Future<bool> exists()
bool existsSync()

Ce face File.exists

exists() returnează un Future<bool> care este true dacă există un fișier la acea cale. Dacă la cale se află un director, rezultatul este false. existsSync() returnează direct bool.

Verificarea este utilă pentru mesaje prietenoase („nu am găsit fișierul”) sau pentru a crea un fișier implicit. Între verificare și folosire alt program poate șterge fișierul, deci codul care citește trebuie să trateze oricum eroarea.

Ce returnează

true dacă fișierul există, altfel false.

Exemple

Exemplul 1: Fișier de setări creat la prima rulare

import 'dart:io';

Future<String> citesteSetari() async {
  final f = File('setari.txt');
  if (!await f.exists()) {
    print('Prima rulare: creez setările implicite.');
    await f.writeAsString('tema=luminoasa');
  }
  return f.readAsString();
}

Future<void> main() async {
  print(await citesteSetari());
  print(await citesteSetari());
}

Rezultat

Prima rulare: creez setările implicite.
tema=luminoasa
tema=luminoasa

Exemplul 2: Fișier față de director

import 'dart:io';

void main() {
  Directory('poze').createSync();
  File('poze/mare.jpg').writeAsBytesSync([1, 2, 3]);
  print(File('poze/mare.jpg').existsSync());
  print(File('poze').existsSync());
  print(Directory('poze').existsSync());
  print(File('poze/lipsa.jpg').existsSync());
}

Rezultat

true
false
true
false

Greșeli frecvente

  • Verifici cu File(cale).existsSync() dacă există un director: rezultatul este false. Folosește Directory(cale).existsSync() sau FileSystemEntity.isDirectory.

Comenzi înrudite

  • File.create: Creează un fișier gol; cu recursive: true creează și directoarele lipsă de pe cale.
  • File.delete: Șterge fișierul de pe disc (definitiv, nu în coș); aruncă eroare dacă fișierul nu există.
  • Directory: Clasa Directory reprezintă un director (folder) de pe disc: îl creezi, îl listezi, verifici dacă există, îl ștergi.
  • FileSystemEntity.isFile: Metode statice care spun ce se află la o cale: fișier, director, link sau nimic.