Dart 目录
最后修改于 2025 年 4 月 4 日
Dart 中的 Directory 类提供了用于处理文件系统目录的操作。它是 Dart 的 dart:io 库的一部分。
目录支持创建、列出、删除和检查目录属性。它对文件操作支持同步和异步。
基本定义
Directory 代表文件系统中的一个目录。它提供了用于操作目录及其内容的方法。
主要功能包括路径操作、文件列表、创建、删除和存在性检查。目录操作可以是同步的或异步的。
创建目录
此示例演示了如何创建新目录。
main.dart
import 'dart:io';
void main() async {
var dir = Directory('new_directory');
try {
await dir.create();
print('Directory created: ${dir.path}');
} catch (e) {
print('Error creating directory: $e');
}
}
我们创建一个 Directory 对象并调用 create() 来创建目录。async/await 模式用于异步文件操作。
$ dart main.dart Directory created: new_directory
列出目录内容
此示例展示了如何列出目录中的文件和子目录。
main.dart
import 'dart:io';
void main() async {
var dir = Directory('.'); // Current directory
try {
var contents = await dir.list().toList();
print('Contents of ${dir.path}:');
for (var entity in contents) {
print(entity.path);
}
} catch (e) {
print('Error listing directory: $e');
}
}
list() 方法返回一个目录条目的流。我们将其转换为列表并打印每个条目的路径。这显示了所有文件和子目录。
$ dart main.dart Contents of .: ./main.dart ./new_directory ./pubspec.yaml
检查目录是否存在
此示例演示了如何检查目录是否存在。
main.dart
import 'dart:io';
void main() async {
var dir = Directory('test_dir');
if (await dir.exists()) {
print('Directory exists');
} else {
print('Directory does not exist');
await dir.create();
print('Created directory');
}
}
exists() 方法检查目录是否存在。如果不存在,我们创建它。此模式对于在执行操作之前确保目录存在很有用。
$ dart main.dart Directory does not exist Created directory
删除目录
此示例展示了如何删除目录及其内容。
main.dart
import 'dart:io';
void main() async {
var dir = Directory('temp_dir');
// Create some test content
await dir.create();
await File('${dir.path}/test.txt').create();
try {
await dir.delete(recursive: true);
print('Directory deleted successfully');
} catch (e) {
print('Error deleting directory: $e');
}
}
delete() 方法删除目录。recursive 参数允许删除非空目录。如果没有它,如果目录不为空,则删除会失败。
$ dart main.dart Directory deleted successfully
获取目录属性
此示例演示了如何访问目录属性和元数据。
main.dart
import 'dart:io';
void main() async {
var dir = Directory('.'); // Current directory
try {
var stat = await dir.stat();
print('Directory: ${dir.path}');
print('Type: ${stat.type}');
print('Size: ${stat.size} bytes');
print('Modified: ${stat.modified}');
print('Accessed: ${stat.accessed}');
} catch (e) {
print('Error getting directory stats: $e');
}
}
stat() 方法返回一个 FileStat 对象,其中包含目录元数据。这包括大小、修改时间和文件类型信息。
$ dart main.dart Directory: . Type: directory Size: 4096 bytes Modified: 2025-04-04 14:30:22.000 Accessed: 2025-04-04 14:35:10.000
最佳实践
- 异步操作: 优先使用异步方法以获得更好的性能
- 错误处理: 始终处理潜在的 IO 异常
- 路径处理: 使用 path.join() 处理跨平台路径
- 资源清理: 完成目录列表后关闭流
来源
本教程介绍了 Dart 的 Directory 类,并通过实际示例展示了常见的目录操作,如创建、列出和删除。
作者
列出 所有 Dart 教程。