dart:io
库中Directory
类的用法介绍如下。
对文件系统上的目录(或 folder
)的引用。
Directory 是一个包含 path 的对象,可以对其执行操作。目录的路径可以是absolute 或相对路径。它允许访问 parent 目录,因为它是一个 FileSystemEntity 。
Directory 还提供对系统临时文件目录 systemTemp 的静态访问,以及访问和更改 current 目录的能力。
创建一个新的 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 方法返回FileSystemEntity 对象的Stream。侦听流以访问找到的每个对象:
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 。这个未来在 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' : 'non-existent');
}
除了 exists , stat 、 rename 和其他方法也是异步的。
其他资源
-
Library 之旅的Files and directories 部分。
-
Write Command-Line Apps 是关于编写 命令行 应用程序的教程,其中包含有关文件和目录的信息。
- 实现的类型
相关用法
- Dart Directory.resolveSymbolicLinks用法及代码示例
- Dart Directory.resolveSymbolicLinksSync用法及代码示例
- Dart DivElement用法及代码示例
- Dart DateTime.toUtc用法及代码示例
- Dart DateTime.minute用法及代码示例
- Dart DateTime.toIso8601String用法及代码示例
- Dart DomStringList.first用法及代码示例
- Dart DateTime.fromMillisecondsSinceEpoch用法及代码示例
- Dart DateTime.add用法及代码示例
- Dart DateTime.isAfter用法及代码示例
- Dart DoubleLinkedQueue.from用法及代码示例
- Dart DateTime用法及代码示例
- Dart DateTime.weekday用法及代码示例
- Dart DomRectList.length用法及代码示例
- Dart DateTime.isAtSameMomentAs用法及代码示例
- Dart DomRectList.first用法及代码示例
- Dart Duration.inDays用法及代码示例
- Dart DomStringList.elementAt用法及代码示例
- Dart Duration.inMicroseconds用法及代码示例
- Dart DateTime.hour用法及代码示例
- Dart DynamicLibraryExtension.lookupFunction用法及代码示例
- Dart DateTime.isBefore用法及代码示例
- Dart DateTime.utc用法及代码示例
- Dart DeferredLibrary用法及代码示例
- Dart DoubleLinkedQueue.isEmpty用法及代码示例
注:本文由纯净天空筛选整理自dart.dev大神的英文原创作品 Directory class。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。