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