Абстрактный класс Directory
Ссылка на директорию (или папку) в файловой системе.
Объект Directory — это объект, содержащий путь (путь) к директории, над которым можно выполнять операции. Путь к директории может быть абсолютным или относительным. Родительскую директорию можно получить, используя свойство parent, унаследованное от FileSystemEntity.
Помимо использования в качестве экземпляра для доступа к файловой системе, Directory имеет ряд статических свойств, таких как systemTemp, которое возвращает временную директорию системы, и свойства current (только для чтения и записи), которые позволяют получить или изменить текущую директорию.
Создайте новый объект Directory с именем пути, чтобы получить доступ к указанной директории в файловой системе из вашей программы.
var myDir = new Directory('myDir');
Большинство методов в этом классе имеют синхронные и асинхронные пары, например, create и createSync. Если у вас нет особой причины использовать синхронную версию метода, предпочитайте асинхронную версию, чтобы избежать блокирования вашей программы.
Создание директории
В следующем примере кода создается директория с помощью метода create. Установив параметр recursive в значение true, вы можете создать указанную директорию и все необходимые родительские директории, если они еще не существуют.
import 'dart:io';
void main() {
// Creates dir/ and dir/subdir/.
new Directory('dir/subdir').create(recursive: true)
// The created directory is returned as a Future.
.then((Directory directory) {
print(directory.path);
});
}
Вывод содержимого директории
Используйте методы list или listSync, чтобы получить список файлов и поддиректорий, содержащихся в директории. Установите recursive в значение true, чтобы рекурсивно вывести все поддиректории. Установите followLinks в значение true, чтобы следовать символическим ссылкам. Метод list возвращает Stream, который предоставляет объекты FileSystemEntity. Используйте функцию обратного вызова listen, чтобы обработать каждый объект по мере его доступности.
import 'dart:io';
void main() {
// Get the system temp directory.
var systemTempDir = Directory.systemTemp;
// List directory contents, recursing into sub-directories,
// but not following symbolic links.
systemTempDir.list(recursive: true, followLinks: false)
.listen((FileSystemEntity entity) {
print(entity.path);
});
}
Использование Futures
Операции ввода-вывода могут блокировать программу на некоторое время, пока она ожидает завершения операции. Чтобы избежать этого, все методы, связанные с вводом-выводом, имеют асинхронный вариант, который возвращает Future. Этот future завершается, когда операция ввода-вывода завершается. Пока операция ввода-вывода выполняется, программа Dart не блокируется и может выполнять другие операции.
Например, метод exists, определяющий, существует ли директория, возвращает булевое значение с помощью Future. Используйте then для регистрации функции обратного вызова, которая вызывается, когда значение становится доступным.
import 'dart:io';
main() {
final myDir = new Directory('dir');
myDir.exists().then((isThere) {
isThere ? print('exists') : print('non-existent');
});
}
Помимо exists, методы stat, rename и другие возвращают Futures.
Другие ресурсы
-
Dart by Example содержит дополнительные примеры кода, ориентированные на задачи, демонстрирующие, как использовать различные API класса Directory и связанного класса File.
-
I/O for Command-Line Apps, раздел из A Tour of the Dart Libraries, посвящен файлам и директориям.
-
Write Command-Line Apps, учебник по написанию командных приложений, содержит информацию о файлах и директориях.
- Реализует
Статические свойства
- current → Directory чтение / запись
-
Создает объект Directory, указывающий на текущую рабочую директорию.
- systemTemp → Directory только для чтения
-
Возвращает директорию временных файлов системы.
Конструкторы
- Directory(String path) factory
-
Создает объект Directory.
- Directory.fromUri(Uri uri) factory
-
Создает объект Directory из URI.
Свойства
- absolute → Directory только для чтения
-
Возвращает экземпляр
Directory, путь к которому является абсолютным путем кthis. - path → String final
-
Возвращает путь к этой директории.
- uri → Uri только для чтения
-
Возвращает
Uri, представляющий расположение директории. - hashCode → int только для чтения, унаследованно
-
Хеш-код для этого объекта.
- isAbsolute → bool только для чтения, унаследованно
-
Возвращает
bool, указывающий, является ли путь к этому объекту абсолютным. - parent → Directory только для чтения, унаследованно
-
Директория, содержащая
this. - runtimeType → Type только для чтения, унаследованно
-
Представление типа объекта во время выполнения.
Операторы
- operator ==(
other) → bool унаследованно -
Оператор равенства.
Методы
- create(
{bool recursive: false }) → Future<Directory> -
Создаёт директорию с указанным именем.
- createSync(
{bool recursive: false }) → void -
Синхронно создаёт директорию с указанным именем.
- createTemp(
[String prefix ]) → Future<Directory> -
Создаёт временную директорию в этой директории. Дополнительные случайные символы добавляются к
prefixдля создания уникального имени директории. Еслиprefixотсутствует или равно null, дляprefixиспользуется пустая строка. - createTempSync(
[String prefix ]) → Directory -
Синхронно создаёт временную директорию в этой директории. Дополнительные случайные символы добавляются к
prefixдля создания уникального имени директории. Еслиprefixотсутствует или равно null, дляprefixиспользуется пустая строка. - list(
{bool recursive: false, bool followLinks: true }) → Stream<FileSystemEntity> -
Выводит список поддиректорий и файлов этой директории Directory. При необходимости выполняет рекурсивный поиск в поддиректориях.
- listSync(
{bool recursive: false, bool followLinks: true }) → List<FileSystemEntity> -
Выводит список поддиректорий и файлов этой директории Directory. При необходимости выполняет рекурсивный поиск в поддиректориях.
- rename(
String newPath) → Future<Directory> -
Переименовывает эту директорию. Возвращает
Future<Directory>, который завершается объектом Directory переименованной директории. - renameSync(
String newPath) → Directory -
Синхронно переименовывает эту директорию. Возвращает объект Directory переименованной директории.
- resolveSymbolicLinks(
) → Future<String> -
Разрешает путь к объекту файловой системы относительно текущей рабочей директории, разрешая все символические ссылки в пути и разрешая все
..и.сегменты пути. - resolveSymbolicLinksSync(
) → String -
Разрешает путь к объекту файловой системы относительно текущей рабочей директории, разрешая все символические ссылки в пути и разрешая все
..и.сегменты пути. - toString(
) → String -
Возвращает строку, удобочитаемую человеком, для этой директории Directory.
- delete(
{bool recursive: false }) → Future<FileSystemEntity> inherited -
Удаляет этот объект FileSystemEntity.
- deleteSync(
{bool recursive: false }) → void inherited -
Синхронно удаляет этот объект FileSystemEntity.
- exists(
) → Future<bool> inherited -
Проверяет, существует ли объект файловой системы с этим путём. Возвращает
Future<bool>, который завершается результатом. - existsSync(
) → bool inherited -
Синхронно проверяет, существует ли объект файловой системы с этим путём.
- noSuchMethod(
Invocation invocation) → dynamic inherited -
Вызывается при попытке доступа к несуществующему методу или свойству.
- stat(
) → Future<FileStat> inherited -
Вызывает функцию stat() операционной системы для пути path этого объекта FileSystemEntity. Идентично
FileStat.stat(this.path). - statSync(
) → FileStat inherited -
Синхронно вызывает функцию stat() операционной системы для пути path этого объекта FileSystemEntity. Идентично
FileStat.statSync(this.path). - watch(
{int events: FileSystemEvent.ALL, bool recursive: false }) → Stream<FileSystemEvent> inherited -
Начать наблюдение за объектом FileSystemEntity за изменениями.
© 2012 the Dart project authors
Licensed under the Creative Commons Attribution-ShareAlike License v4.0.
https://api.dartlang.org/stable/1.24.3/dart-io/Directory-class.html