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 estefalse. FoloseșteDirectory(cale).existsSync()sauFileSystemEntity.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.