Класс Directory
Ссылка на директорию (или папку) в файловой системе.
Объект Directory хранит путь к директории, над которым можно выполнять операции. Путь к директории может быть абсолютным или относительным. Он позволяет получить доступ к родительской директории, так как является объектом FileSystemEntity.
Класс Directory также предоставляет статический доступ к временной директории системы systemTemp и возможность доступа и изменения текущей директории .
Создайте новую директорию Directory, чтобы получить доступ к директории с указанным путем:
var myDir = Directory('myDir'); Большинство методов экземпляра класса Directory существуют в синхронных и асинхронных вариантах, например, create и createSync. Если у вас нет конкретной причины использовать синхронную версию метода, предпочитайте асинхронную версию, чтобы избежать блокировки программы.
Создание директории
Следующий пример кода создает директорию с помощью метода create. Установив параметр recursive в значение true, вы можете создать указанную директорию и все необходимые родительские директории, если они ещё не существуют.
import 'dart:io';
void main() async {
// Creates dir/ and dir/subdir/.
var directory = await Directory('dir/subdir').create(recursive: true);
print(directory.path);
} Вывод содержимого директории
Используйте методы list или listSync, чтобы получить список файлов и поддиректорий, содержащихся в директории. Установите recursive в значение true, чтобы рекурсивно вывести все поддиректории. Установите followLinks в значение true, чтобы следовать символическим ссылкам. Метод list возвращает поток Stream объектов FileSystemEntity. Подписывайтесь на поток, чтобы получить доступ к каждому объекту по мере его обнаружения:
import 'dart:io';
void main() async {
// Get the system temp directory.
var systemTempDir = Directory.systemTemp;
// List directory contents, recursing into sub-directories,
// but not following symbolic links.
await for (var entity in
systemTempDir.list(recursive: true, followLinks: false)) {
print(entity.path);
}
} Использование асинхронных методов
Операции ввода-вывода могут блокировать программу на некоторое время, ожидая завершения операции. Чтобы избежать этого, все методы, связанные с вводом-выводом, имеют асинхронный вариант, который возвращает Future. Этот Future завершается, когда операция ввода-вывода завершается. Пока операция ввода-вывода выполняется, программа Dart не блокируется и может выполнять другие операции.
Например, метод exists, определяющий, существует ли директория, асинхронно возвращает логическое значение с помощью Future.
import 'dart:io';
void main() async {
final myDir = Directory('dir');
var isThere = await myDir.exists();
print(isThere ? 'exists' : 'non-existent');
} Помимо exists, асинхронными также являются методы stat, rename и другие.
Дополнительные ресурсы
-
Раздел Файлы и директории в обзоре библиотек.
-
Создание приложений командной строки, учебник по написанию приложений командной строки, включает информацию о файлах и директориях.
- Реализованные типы
Конструкторы
- Directory(String path) factory
- Создаёт объект Directory.
- Directory.fromRawPath(Uint8List path) factory
- Directory.fromUri(Uri uri) factory
- Создаёт Directory из URI.
Свойства
- absolute → Directory только для чтения, переопределено
- Directory с абсолютным путем this.
- hashCode → int только для чтения, унаследовано
- Код хэширования для этого объекта.
- isAbsolute → bool только для чтения, унаследовано
- Является ли путь этого объекта абсолютным.
- parent → Directory только для чтения, унаследовано
- Родительская директория этого элемента.
- path → String только для чтения, переопределено
- Получает путь к этой директории.
- runtimeType → Type только для чтения, унаследовано
- Представление типа объекта во время выполнения.
- uri → Uri только для чтения, переопределено
- Uri, представляющий расположение директории.
Методы
- create(
{bool recursive = false}) → Future< Directory> - Создаёт директорию, если она не существует.
- createSync(
{bool recursive = false}) → void - Синхронно создаёт директорию, если она не существует.
- createTemp(
[String? prefix]) → Future< Directory> - Создаёт временную директорию в этой директории.
- createTempSync(
[String? prefix]) → Directory - Синхронно создаёт временную директорию в этой директории.
- delete(
{bool recursive = false}) → Future< FileSystemEntity> inherited - Удаляет этот
FileSystemEntity. - deleteSync(
{bool recursive = false}) → void inherited - Синхронно удаляет этот FileSystemEntity.
- exists(
) → Future< bool> inherited - Проверяет, существует ли элемент файловой системы с этим путём.
- existsSync(
) → bool inherited - Синхронно проверяет, существует ли элемент файловой системы с этим путём.
- list(
{bool recursive = false, bool followLinks = true}) → Stream< FileSystemEntity> - Выводит список поддиректорий и файлов этой Directory.
- listSync(
{bool recursive = false, bool followLinks = true}) → List< FileSystemEntity> - Выводит список поддиректорий и файлов этой Directory. Можно рекурсивно перебирать поддиректории.
- noSuchMethod(
Invocation invocation) → dynamic inherited - Вызывается, когда обращаются к несуществующему методу или свойству.
- rename(
String newPath) → Future< Directory> override - Переименовывает эту директорию.
- renameSync(
String newPath) → Directory override - Синхронно переименовывает эту директорию.
- resolveSymbolicLinks(
) → Future< String> override - Разрешает символическую ссылку на объект файловой системы относительно текущей рабочей директории.
- resolveSymbolicLinksSync(
) → String override - Разрешает символическую ссылку на объект файловой системы относительно текущей рабочей директории.
- stat(
) → Future< FileStat> inherited - Вызывает операционную
stat()функцию на пути. - statSync(
) → FileStat inherited - Синхронно вызывает операционную
stat()функцию на пути. - toString(
) → String override - Возвращает удобочитаемое представление этой Directory.
- watch(
{int events = FileSystemEvent.all, bool recursive = false}) → Stream< FileSystemEvent> inherited - Начинает отслеживать изменения FileSystemEntity.
Операторы
- operator ==(
Object other) → bool inherited - Оператор равенства.
Статические свойства
- current ↔ Directory read / write
- Создаёт объект директории, указывающий на текущую рабочую директорию.
- systemTemp → Directory read-only
- Временная директория системы.
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-io/Directory-class.html