Библиотеки » Ввод-вывод (dart:io) » Directory » deleteSync
функция Directory::deleteSync
Удаление директорий в файловой системе
Синтаксис
Directory
Directory.deleteSync
(bool recursive)
Передаваемые параметры
bool recursiveВозвращаемое значение
DirectoryОписание
Метод deleteSync
позволяет удалить директорию на основе указанного пути.
Данный метод выполняется последовательно, и пока не будет удаляться директория, или не произойдет сбой, управление не будет возвращено в основной поток.
Если рекурсивное удаление отключено - recursive: false
, то для корректного удаления - папка должна быть пуста. В случае, когда рекурсивное удаление включено - recursive: true
, каталог будет удален, включая все содержимое - файлы и вложенные каталоги
Если в пути указанна несуществующая директория, то будет сгенерированна ошибка DirectoryIOException
Заметки
Примеры использования:
import "dart:io";
void directoryDeleteSync(Directory baseDirectory, RegExp selector) {
// получаем итератор для вложенных директорий
DirectoryLister lister = baseDirectory.list(recursive: true);
// назначаем обработчик для полученных директорий
lister.onDir = (String directory) {
// сравниваем директорию с регулярным выражением
if (selector.hasMatch(directory)) {
print ("найдена директория - ${directory}");
// если совпадение, то удаляем
try {
new Directory(directory).deleteSync(recursive: true);
print ("удалена директория - ${directory}");
} on DirectoryIOException catch (e) {
print ("возникла ошибка при удалении директории - ${directory}");
}
}
};
}
void main() {
// создадим какой-ниудь временный каталог в системном каталоге
Directory folderToDelete1 = new Directory("").createTempSync();
if (folderToDelete1.existsSync()) {
// создание прошло успешно, директория создана
// выведем путь на экран
print(folderToDelete1.path);
// будет выведен примерно следущий путь
// ./temporary-03d441ad-55ca-11e2-bdf0-efbc588db635
// удалим наш временный каталог
folderToDelete1.deleteSync();
}
// создадим еще какой-ниудь временный каталог в системном каталоге
Directory folderToDelete2 = new Directory("").createTempSync();
// добавим несколько вложенных каталогов
for(int i = 0; i<5; i++) {
Directory sub01 = new Directory.fromPath(new Path(folderToDelete2.path).append("sub{$i}"));
sub01.createSync();
}
// попробуем удалить временный каталог
try {
folderToDelete2.deleteSync();
} on DirectoryIOException catch (e) {
print(e.path);
folderToDelete2.deleteSync(recursive: true);
}
// удалим все директории "*test*" с помощью нашей функции directoryDeleteSync
directoryDeleteSync(new Directory("D:\\TEST\\bootstrap-2.1.1\\"), new RegExp(r"test"));
}