Dart 文件类
最后修改于 2025 年 4 月 4 日
Dart 中的 File 类提供了用于处理文件的各种方法。它允许读取、写入和操作文件内容及元数据。
文件操作默认是异步的,使用 Dart 的 Future API。该类是 Dart dart:io 库的一部分,用于服务器端应用程序。
基本定义
File 代表文件系统中的文件引用。它为文件操作提供了同步和异步方法。
主要功能包括读/写文本/二进制数据、文件元数据访问以及文件操作,如复制或删除。它支持相对路径和绝对路径。
读取文本文件
此示例展示了如何异步读取文本文件的内容。
main.dart
import 'dart:io';
void main() async {
var file = File('example.txt');
try {
var contents = await file.readAsString();
print(contents);
} catch (e) {
print('Error reading file: $e');
}
}
我们创建一个指向 'example.txt' 的 File 对象,然后读取其内容。readAsString() 方法返回一个 Future,该 Future 在获取文件文本时完成。
$ dart main.dart Hello from example.txt
写入文件
此示例演示了如何异步将文本写入文件。
main.dart
import 'dart:io';
void main() async {
var file = File('output.txt');
try {
await file.writeAsString('Dart File example\n', mode: FileMode.append);
print('File written successfully');
} catch (e) {
print('Error writing file: $e');
}
}
我们在追加模式下打开 'output.txt' 并添加一行文本。FileMode.append 确保新内容被添加到末尾,而不是覆盖现有数据。
$ dart main.dart File written successfully
读取文件元数据
此示例展示了如何获取文件信息。
main.dart
import 'dart:io';
void main() async {
var file = File('example.txt');
try {
var stat = await file.stat();
print('File size: ${stat.size} bytes');
print('Modified: ${stat.modified}');
print('Accessed: ${stat.accessed}');
} catch (e) {
print('Error getting file stats: $e');
}
}
stat() 方法返回一个包含文件元数据的 FileStat 对象。这包括文件大小、修改时间和访问时间信息。
$ dart main.dart File size: 24 bytes Modified: 2025-04-04 10:30:45.000 Accessed: 2025-04-04 10:35:12.000
复制和删除文件
此示例演示了文件操作。
main.dart
import 'dart:io';
void main() async {
var source = File('source.txt');
var dest = File('backup.txt');
try {
await source.copy(dest.path);
print('File copied successfully');
await dest.delete();
print('Backup file deleted');
} catch (e) {
print('Error manipulating files: $e');
}
}
我们将 source.txt 复制到 backup.txt,然后删除备份文件。这两个操作都是异步的,并且返回一个在完成时完成的 Future。
$ dart main.dart File copied successfully Backup file deleted
读取二进制数据
此示例展示了如何将文件读取为字节。
main.dart
import 'dart:io';
void main() async {
var file = File('image.png');
try {
var bytes = await file.readAsBytes();
print('Read ${bytes.length} bytes');
print('First byte: ${bytes[0]}');
} catch (e) {
print('Error reading binary file: $e');
}
}
readAsBytes() 方法将整个文件读取到 Uint8List 中。这对于二进制文件(如图像)非常有用,因为不适合文本读取。
$ dart main.dart Read 1024 bytes First byte: 137
最佳实践
- 错误处理:始终处理潜在的 IO 错误
- 异步操作:为了更好的性能,请优先使用异步方法
- 资源清理:完成操作后关闭流
- 路径处理:使用 path.join() 处理跨平台路径
来源
本教程通过实际示例介绍了 Dart 的 File 类,展示了常见的文件操作,包括读取、写入和文件操作。
作者
列出 所有 Dart 教程。