dart:io
库中File
类的用法介绍如下。
对文件系统上文件的引用。
File
包含可以对其执行操作的path。您可以使用从 FileSystemEntity 继承的属性 parent 获取文件的父目录。
使用路径名创建一个新的File
对象,以从您的程序访问文件系统上的指定文件。
var myFile = File('file.txt');
File
类包含用于操作文件及其内容的方法。使用此类中的方法,您可以打开和关闭文件、读取和写入文件、创建和删除文件以及检查文件是否存在。
读取或写入文件时,您可以使用流(使用 openRead )、随机访问操作(使用 open )或方便的方法,例如 readAsString ,
此类中的大多数方法都以同步和异步对的形式出现,例如 readAsString 和 readAsStringSync 。除非您有特定原因使用方法的同步版本,否则请首选异步版本以避免阻塞您的程序。
如果路径是链接
如果 path 是符号链接,而不是文件,则 File
的方法对链接的最终目标进行操作,但在链接上操作的 delete 和 deleteSync 除外。
从文件中读取
以下代码示例使用异步 readAsString 方法将文件中的全部内容作为字符串读取:
import 'dart:async';
import 'dart:io';
void main() {
File('file.txt').readAsString().then((String contents) {
print(contents);
});
}
读取文件的更灵活和有用的方法是使用 Stream 。使用 openRead 打开文件,这将返回一个流,该流以字节块的形式提供文件中的数据。读取流以处理可用的文件内容。您可以连续使用各种转换器将文件内容处理为所需的格式,或准备输出。
您可能希望使用流来读取大文件、使用转换器操作数据或与其他 API 兼容,例如 WebSocket s。
import 'dart:io';
import 'dart:convert';
import 'dart:async';
void main() async {
final file = File('file.txt');
Stream<String> lines = file.openRead()
.transform(utf8.decoder) // Decode bytes to UTF-8.
.transform(LineSplitter()); // Convert stream to individual lines.
try {
await for (var line in lines) {
print('$line: ${line.length} characters');
}
print('File is now closed.');
} catch (e) {
print('Error: $e');
}
}
写入文件
要将字符串写入文件,请使用 writeAsString 方法:
import 'dart:io';
void main() async {
final filename = 'file.txt';
var file = await File(filename).writeAsString('some content');
// Do something with the file.
}
您还可以使用 Stream 写入文件。使用 openWrite 打开文件,它会返回一个 IOSink,您可以将数据写入该文件。请务必使用IOSink.close 方法关闭水槽。
import 'dart:io';
void main() {
var file = File('file.txt');
var sink = file.openWrite();
sink.write('FILE ACCESSED ${DateTime.now()}\n');
// Close the IOSink to free system resources.
sink.close();
}
异步方法的使用
为避免程序意外阻塞,有几个方法是异步的并返回 Future 。例如,获取文件长度的 length 方法返回 Future 。等待未来准备好后得到结果。
import 'dart:io';
void main() async {
final file = File('file.txt');
var length = await file.length();
print(length);
}
除了长度之外,exists、lastModified、stat 和其他方法都是异步的。
其他资源
-
Library 之旅的Files and directories 部分。
-
Write Command-Line Apps 是关于编写 命令行 应用程序的教程,其中包含有关文件和目录的信息。
- 实现的类型
相关用法
- Dart FileList.first用法及代码示例
- Dart FileList.length用法及代码示例
- Dart FileSystemEntity用法及代码示例
- Dart FileSystemEntity.resolveSymbolicLinks用法及代码示例
- Dart File.renameSync用法及代码示例
- Dart FileSystemEntity.resolveSymbolicLinksSync用法及代码示例
- Dart FileList.elementAt用法及代码示例
- Dart File.rename用法及代码示例
- Dart FileList.last用法及代码示例
- Dart Finalizer.attach用法及代码示例
- Dart Finalizable用法及代码示例
- Dart Finalizer用法及代码示例
- Dart FixedSizeListIterator.current用法及代码示例
- Dart Finalizer.detach用法及代码示例
- Dart FixedSizeListIterator.moveNext用法及代码示例
- Dart Future用法及代码示例
- Dart Float32List.view用法及代码示例
- Dart Future.doWhile用法及代码示例
- Dart Future.any用法及代码示例
- Dart Future.value用法及代码示例
- Dart Float32x4List.sublist用法及代码示例
- Dart Function.apply用法及代码示例
- Dart Future.wait用法及代码示例
- Dart Future.whenComplete用法及代码示例
- Dart Future.catchError用法及代码示例
注:本文由纯净天空筛选整理自dart.dev大神的英文原创作品 File class。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。