функция 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"));
}
						

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