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 以跟随符号链接。列表方法返回一个 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);
  }
}

异步方法的使用

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的路径是的绝对路径。
没有setter重写
hashCode int
此对象的重写哈希码。
没有setter继承
isAbsolute bool
此对象路径是否为绝对路径。
没有setter继承
parent Directory
此实体的父目录。
没有setter继承
path String
获取此目录的路径。
没有setter重写
runtimeType Type
表示对象运行时的类型。
没有setter继承
uri Uri
表示目录位置的Uri
没有setter重写

方法

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
重写
deleteSync({bool recursive = false}) → void
同步删除此Directory
重写
exists() Future<bool>
检查具有此路径的文件系统实体是否存在。
继承
existsSync() bool
同步检查具有此路径的文件系统实体是否存在。
继承
list({bool recursive = false, bool followLinks = true}) Stream<FileSystemEntity>
列出此目录下的子目录和文件。
listSync({bool recursive = false, bool followLinks = true}) List<FileSystemEntity>
列出此目录下的子目录和文件。可选地递归到子目录。
noSuchMethod(Invocation invocation) → dynamic
当访问不存在的方法或属性时被调用。
继承
rename(String newPath) Future<Directory>
重命名此目录。
重写
renameSync(String newPath) Directory
同步重命名此目录。
重写
解析相对于当前工作目录的文件系统对象的路径。
重写
resolveSymbolicLinksSync() String
解析相对于当前工作目录的文件系统对象的路径。
重写
stat() Future<FileStat>
在路径path上调用操作系统的stat()函数。
继承
statSync() FileStat
同步在路径path上调用操作系统的stat()函数。
继承
toString() String
返回此Directory的人类可读表示。
重写
watch({int events = FileSystemEvent.all, bool recursive = false}) Stream<FileSystemEvent>
开始监视 FileSystemEntity 的变化。
继承

操作符

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

静态属性

current Directory
创建一个指向当前工作目录的目录对象。
getter/setter 成对
systemTemp Directory
系统临时目录。
无设置器