функция Directory::createTemp

Асинхронное создание временной директории в файловой системе

Синтаксис

Future[bool]
Directory.createTemp

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

Future[bool]

Описание

Метод createTemp позволяет асинхронно создать временную директорию но основе указанного пути.

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

Временная директория создается но основе текущего пути, к которому добавляется некоторое количество произвольных символов. Если путь пустой, то создается временная директория в системном каталоге.

Если в пути указана не существующая директория на последнем уровне вложенности то создание временного каталого происходит нормально, потому что к последнему имени дописываются случайные символы и создается директория. А вот если в пути встречается несуществующая директория на более высоких уровнях вложенности то будет сгенерированна ошибка DirectoryIOException

Заметки

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


import "dart:io";

void main() {
  // создадим временный каталог внутри текущего
  Directory temporaryDir1 = new Directory("./temporary");

  // непосредственно запустим процесс создания директории в файловой системе
  Future<Directory> created1 = temporaryDir1.createTemp();
  // определим функцию обработчик, вызываемую по результатам создания каталога
  created1.onComplete((Future<Directory> future) {
    if (future.hasValue) {
      // создание прошло успешно, директория создана
      // выведем путь на экран
      print(future.value.path);

      // будет выведен примерно следущий путь
      // ./temporary-03d441ad-55ca-11e2-bdf0-efbc588db635

      // удалим временный каталог
      new Directory(future.value.path).deleteSync();
    } else {
      // выведим ошибку, если вдруг возникнет в процессе создания
      print(future.exception);
    }
  });


// создадим временный каталог в системной папке
  Directory temporaryDir2 = new Directory("");

  // непосредственно запустим процесс создания директории в файловой системе
  Future<Directory> created2 = temporaryDir2.createTemp();
  // определим функцию обработчик, вызываемую по результатам создания каталога
  created2.onComplete((Future<Directory> future) {
    if (future.hasValue) {
      // создание прошло успешно, директория создана
      // выведем путь на экран
      print(future.value.path);

      // для платформы Microsoft Windows будет выведен примерно следующий путь
      // C:\Users\ADMIN\AppData\Local\Temp\tempdir-0dc4eecb-55cb-11e2-bdf0-efbc588db635

      // удалим временный каталог
      new Directory(future.value.path).deleteSync();
    } else {
      // выведим ошибку, если вдруг возникнет в процессе создания
      print(future.exception);
    }
  });
}
						

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