Библиотеки » Ввод-вывод (dart:io) » Directory » createTemp
функция 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);
}
});
}