Spec-Zone.ru › Dart 2

dart:io

Класс 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 и другие.

Дополнительные ресурсы

  • Раздел Файлы и директории в обзоре библиотек.

  • Создание приложений командной строки, учебник по написанию приложений командной строки, включает информацию о файлах и директориях.

Реализованные типы
  • FileSystemEntity

Конструкторы

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API