Directory抽象 接口

文件系统上的目录(或文件夹)的引用。

Directory 是一个对象,包含可以执行操作的路径。目录的路径可以是 绝对路径 或相对路径。由于它是 FileSystemEntity,因此可以访问父目录。

Directory 还提供了对系统临时文件目录的静态访问,systemTemp,以及访问和更改 当前目录 的能力。

创建一个新 Directory 以访问指定路径的目录

var myDir = Directory('myDir');

Directory 的大多数实例方法都存在同步和异步两种版本,例如,createcreateSync。除非你有使用方法同步版本的特定原因,否则建议使用异步版本以避免阻塞你的程序。

创建目录

以下代码示例使用 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);
}

列出目录条目

使用 listlistSync 方法获取目录中包含的文件和目录。将 recursive 设置为 true 以递归列出所有子目录。将 followLinks 设置为 true 以跟踪符号链接。列表方法返回一个 StreamFileSystemEntity 对象。监听流以访问每个对象

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);
  }
}

异步方法的使用

I/O 操作可能会在等待操作完成的一段时间内阻塞程序。为了避免这种情况,所有涉及 I/O 的方法都有一个异步版本,它返回一个 Future。此 future 在 I/O 操作完成时完成。在 I/O 操作进行时,Dart 程序不会被阻塞,可以执行其他操作。

例如,确定目录是否存在的 exists 方法,使用 Future 异步返回一个布尔值。

import 'dart:io';

void main() async {
  final myDir = Directory('dir');
  var isThere = await myDir.exists();
  print(isThere ? 'exists' : 'nonexistent');
}

除了 exists 之外,statrename 和其他方法也是异步的。

其他资源

已实现的类型

构造函数

Directory(String path)
创建一个 Directory 对象。
工厂方法
Directory.fromRawPath(Uint8List path)
工厂方法
Directory.fromUri(Uri uri)
从 URI 创建一个 Directory
工厂方法

属性

absolute Directory
路径为该 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>
删除此 Directory
override
deleteSync({bool recursive = false}) → void
同步删除此 Directory
override
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>
重命名此目录。
override
renameSync(String newPath) Directory
同步重命名此目录。
override
解析相对于当前工作目录的文件系统对象路径。
override
resolveSymbolicLinksSync() String
解析相对于当前工作目录的文件系统对象路径。
override
stat() Future<FileStat>
path 上调用操作系统的 stat() 函数。
继承
statSync() FileStat
同步地在 path 上调用操作系统的 stat() 函数。
继承
toString() String
返回一个可读的表示形式,表示此 Directory
override
watch({int events = FileSystemEvent.all, bool recursive = false}) Stream<FileSystemEvent>
开始监视 FileSystemEntity 的更改。
继承

操作符

operator ==(Object other) bool
等价操作符。
继承

静态属性

current Directory
创建一个指向当前工作目录的目录对象。
getter/setter 对
systemTemp Directory
系统临时目录。
没有setter