Spec-Zone.ru › Dart 1

dart:io

Абстрактный класс 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, учебник по написанию командных приложений, содержит информацию о файлах и директориях.

Реализует
  • FileSystemEntity

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

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

Spec-Zone.ru

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