文件系统上的目录(或文件夹)的引用。
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 以跟踪符号链接。列表方法返回一个 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 之外,stat、rename 和其他方法也是异步的。
其他资源
- 已实现的类型
构造函数
- Directory(String path)
- 创建一个 Directory 对象。工厂方法
- Directory.fromRawPath(Uint8List path)
-
工厂方法
- Directory.fromUri(Uri uri)
- 从 URI 创建一个 Directory。工厂方法
属性
方法
-
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
-
resolveSymbolicLinks(
) → Future< String> - 解析相对于当前工作目录的文件系统对象路径。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