文件系统上的目录(或文件夹)的引用。
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。重写
-
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 - 同步重命名此目录。重写
-
resolveSymbolicLinks(
) → Future< String> - 解析相对于当前工作目录的文件系统对象的路径。重写
-
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
- 系统临时目录。无设置器