Класс 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, путь которого является абсолютным путем этого объекта.
- 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