FileSystemEntity.isFile în Dart

Metode statice care spun ce se află la o cale: fișier, director, link sau nimic.

Sintaxă
static Future<bool> isFile(String path)
static Future<bool> isDirectory(String path)
static Future<FileSystemEntityType> type(String path, {bool followLinks = true})

Ce face FileSystemEntity.isFile

Când ai doar o cale text și nu știi ce este, FileSystemEntity.isFile(cale) și FileSystemEntity.isDirectory(cale) răspund cu true/false. Ambele sunt asincrone; variantele isFileSync și isDirectorySync răspund imediat.

FileSystemEntity.type(cale) dă răspunsul complet: FileSystemEntityType.file, .directory, .link sau .notFound. Este util într-un switch. Există și typeSync.

Parametri

Parametru Descriere
path Calea verificată.
followLinks La type: dacă un link simbolic este urmat până la ținta lui.

Ce returnează

isFile/isDirectory: Future<bool>. type: Future<FileSystemEntityType>.

Exemple

Exemplul 1: Ce se află la fiecare cale

import 'dart:io';

Future<void> main() async {
  await Directory('documente').create();
  await File('documente/cv.pdf').writeAsBytes([37, 80, 68, 70]);

  for (final cale in ['documente', 'documente/cv.pdf', 'lipsa']) {
    print('$cale: fișier=${await FileSystemEntity.isFile(cale)}, '
        'director=${await FileSystemEntity.isDirectory(cale)}');
  }
}

Rezultat

documente: fișier=false, director=true
documente/cv.pdf: fișier=true, director=false
lipsa: fișier=false, director=false

Exemplul 2: type într-un switch

import 'dart:io';

String descrie(String cale) => switch (FileSystemEntity.typeSync(cale)) {
      FileSystemEntityType.file => '$cale este un fișier',
      FileSystemEntityType.directory => '$cale este un director',
      FileSystemEntityType.notFound => '$cale nu există',
      _ => '$cale este altceva (link, socket…)',
    };

void main() {
  Directory('muzica').createSync();
  File('playlist.m3u').writeAsStringSync('');
  for (final cale in ['muzica', 'playlist.m3u', 'video']) {
    print(descrie(cale));
  }
  print(FileSystemEntity.typeSync('muzica'));
}

Rezultat

muzica este un director
playlist.m3u este un fișier
video nu există
directory

Greșeli frecvente

  • Apelezi isFile fără await într-un if: un Future<bool> nu este bool, iar analizorul dă eroare. Folosește await sau isFileSync.

Comenzi înrudite

  • FileSystemEntity: Clasa de bază comună pentru File, Directory și Link; are path, uri, parent, exists, delete, rename, stat.
  • File.exists: Verifică dacă fișierul există pe disc; existsSync returnează direct true sau false.
  • File.stat: Returnează dintr-un singur apel informațiile despre fișier: tip, mărime, date de modificare și permisiuni.