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 教程。