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