функция Directory::rename

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

Синтаксис

Future[Directory]
Directory.rename
(String newPath)

Передаваемые параметры

String newPath

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

Future[Directory]

Описание

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

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

Если новое имя для директории указывает на уже существующую директорию, то существующая папка затирается. Если новое имя для директории указывает на уже существующий файл, то опреация прерывается и возвращается исключение типа DirectoryIOException.

Заметки

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


import "dart:io";

// определим функцию для переименования директорий
void directoryRename(Directory baseDirectory, RegExp from, String to) {
  // получаем итератор для вложенных директорий
  DirectoryLister lister = baseDirectory.list(recursive: true);

  // назначаем обработчик для полученных директорий
  lister.onDir = (String directory) {
    // получим путь для директории
    Path dirPath = new Path.fromNative(directory);

    // извелекем непосредственно имя директории, без всего пути
    String dirLast = dirPath.segments().last;

    // сравниваем имя директории с регулярным выражением
    if (from.hasMatch(dirLast)) {
      print ("найдена директория - ${directory}");

      // получаем путь до нашего каталога
      List<String> segments = dirPath.segments();
      segments[segments.length - 1] = dirLast.replaceAll(from, to);

      // переименовываем папку
      new Directory(directory).rename(Strings.join(segments, Platform.pathSeparator)).onComplete((Future<Directory> future) {
        if (future.hasValue) {
          print ("директория переименованна - ${future.value.path}");
        } else {
          print ("возникла ошибка при переименовании директории - ${future.exception.path}");
        }
      });
    }
  };
}

void main() {
  // переименуем все директории "*test*" с помощью нашей функции directoryRename
  directoryRename(new Directory("D:\\TEST\\bootstrap-2.1.1\\"), new RegExp(r"tests"), "tests.source");
}
						

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