функция Directory::exists

Асинхронное определение существования директории

Синтаксис

Future[bool]
Directory.exists

Возвращаемое значение

Future[bool]

Описание

Метод exists позволяет асинхронно определить существует ли данная директория в файловой системе. После вызова данного метода, управление не блокируется, а сразу же возвращается в основной поток, и в качестве результата отдается объект типа Future, который обрабатывает данные о существовании каталога.

Заметки

Примеры использования:


import "dart:io";
import "dart:math";

void main() {
  // получим текущую директорию
  Directory currentDir = new Directory.current();
  currentDir.exists().onComplete((Future<bool> future) {
    if (future.value) {
      print("каталог ${currentDir.path} существует");
    } else {
      print("каталог ${currentDir.path} не сущестует");
    }
  });

  // запустим паралельно еще несколько запросов на существование директорий
  for(int i = 0; i < 10; i++) {
    Directory dir = new Directory("/");
    dir.exists().onComplete((Future<bool> future) {
      if (future.value) {
        print("каталог ${i} ${dir.path} существует");
      } else {
        print("каталог ${i} ${dir.path} не сущестует");
      }
    });
  }

  // запустим какой-нибудь относительно не длительный расчет
  Random rnd = new Random();
  double sum = 0.0;
  for(int i = 0; i < 10000; i++) {
    sum = sum + sin(rnd.nextInt(1000));
  }

  print("сумма - $sum");

  /*
  В результате получим примерно следующий вывод, причем множественные
  проверки на существования каталога "/" могут оканчиваться не в том порядке
  в котором начинались, потому что они шли паралельно.

  сумма - 77.9108680023771
  каталог D:\WORK\Projects.DART\example_core_collection существует
  каталог 0 / существует
  каталог 2 / существует
  каталог 1 / существует
  каталог 3 / существует
  каталог 4 / существует
  каталог 5 / существует
  каталог 6 / существует
  каталог 7 / существует
  каталог 8 / существует
  каталог 9 / существует
   */
}
					

Официальная документация (английский)