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, путь которого является абсолютным путем этого объекта.
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>
унаследовано
Удаляет этот FileSystemEntity.
deleteSync({bool recursive = false}) → void
унаследовано
Синхронно удаляет этот FileSystemEntity.
exists() → Future<bool>
унаследовано
Проверяет, существует ли объект файловой системы по этому пути.
existsSync() → bool
унаследовано
Синхронно проверяет, существует ли объект файловой системы по этому пути.
list({bool recursive = false, bool followLinks = true}) → Stream<FileSystemEntity>
Перечисляет подкаталоги и файлы этого Directory.
listSync({bool recursive = false, bool followLinks = true}) → List<FileSystemEntity>
Перечисляет подкаталоги и файлы этого Directory. При необходимости рекурсивно обходит подкаталоги.
noSuchMethod(Invocation invocation) → dynamic
унаследовано
Вызывается при обращении к несуществующему методу или свойству.
rename(String newPath) → Future<Directory>
переопределено
Переименовывает этот каталог.
renameSync(String newPath) → Directory
переопределено
Синхронно переименовывает этот каталог.
resolveSymbolicLinks() → Future<String>
переопределено
Определяет путь объекта файловой системы относительно текущего рабочего каталога.
resolveSymbolicLinksSync() → String
переопределено
Определяет путь объекта файловой системы относительно текущего рабочего каталога.
stat() → Future<FileStat>
унаследовано
Вызывает функцию stat() операционной системы для пути.
statSync() → FileStat
унаследовано
Синхронно вызывает функцию stat() операционной системы для пути.
toString() → String
переопределено
Возвращает удобное для чтения представление этого Directory.
watch({int events = FileSystemEvent.all, bool recursive = false}) → Stream<FileSystemEvent>
унаследовано
Начинает отслеживать изменения в FileSystemEntity.

Операторы

operator ==(Object other) → bool
унаследовано
Оператор равенства.

Статические свойства

current ↔ Directory
чтение / запись
Создает объект каталога, указывающий на текущий рабочий каталог.
systemTemp → Directory
только для чтения
Системный каталог временных файлов.

© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-io/Directory-class.html

Spec-Zone.ru

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