Dart 写入文件
最后修改日期:2024 年 1 月 28 日
在本文中,我们将展示如何在 Dart 语言中写入文件。
dart:io
包用于执行 IO 操作,包括写入文件。File
类包含用于操作文件及其内容的方法。
Dart 提供了同步和异步方法用于写入文件,例如 writeAsStringSync
和 writeAsString
。
openWrite
函数为文件创建一个新的独立 IOSink
。当不再使用时,必须显式关闭它,以释放系统资源。
Dart writeAsStringSync
writeAsStringSync
方法同步地将字符串写入文件。它会打开文件,以指定的编码写入字符串,然后关闭文件。
import 'dart:io'; void main() { final fname = 'output.txt'; final f = new File(fname); final data = 'an old falcon'; f.writeAsStringSync(data); }
在程序中,我们同步地将一个字符串写入文件。如果文件不存在,则会创建文件。如果文件已存在,则会被覆盖。
import 'dart:io';
我们导入 dart:io
库。
final fname = 'output.txt'; final f = new File(fname);
我们创建了一个新的 File
实例。
final data = 'an old falcon'; f.writeAsStringSync(data);
我们将字符串写入文件。
Dart writeAsString
writeAsString
函数打开文件,以指定的编码写入字符串,然后关闭文件。它返回一个 Future<File>
,该 Future 在整个操作完成后会以文件对象完成。
import 'dart:io'; void main() async { final fname = 'output2.txt'; final f = new File(fname); final data = 'a stormy night'; await f.writeAsString(data); }
我们使用 writeAsString
函数将字符串写入文件。
void main() async {
由于我们使用了异步的 writeAsString
函数,因此必须在 main 函数声明中添加 async
关键字。
await f.writeAsString(data);
使用 await
关键字,我们可以获取异步操作的完成结果。
Dart writeAsBytesSync
writeAsBytesSync
成员函数同步地将字节列表写入文件。
import 'dart:io'; void main() { final fname = 'bytes.txt'; final text = "one 🐘 and three 🐋"; final data = utf8.encode(text); final f = new File(fname); f.writeAsBytesSync(data); }
在示例中,我们使用 writeAsBytesSync
将带有表情符号的文本消息写入文件。
final text = "one 🐘 and three 🐋";
我们有包含两个表情符号的文本。
final data = utf8.encode(text);
我们将文本编码为整数列表。
f.writeAsBytesSync(data);
编码后的文本被同步写入文件。
$ dart main.dart $ cat bytes.txt one 🐘 and three 🐋
Dart 获取图片
在下一个示例中,我们将从 URL 资源获取图片。
import 'dart:io'; import 'package:http/http.dart' as http; void main() async { final res = await http.get(Uri.http('webcode.me', '/favicon.ico')); final bdata = res.bodyBytes; final fname = 'favicon.ico'; final f = await File(fname); await f.writeAsBytes(bdata); }
该示例下载了一个小的 favicon。
import 'package:http/http.dart' as http;
要创建 HTTP GET 请求,我们使用 http 库。
final bdata = res.bodyBytes;
使用 bodyBytes
,我们检索响应体中的字节。
final fname = 'favicon.ico'; final f = await File(fname);
我们创建 File
对象。
await f.writeAsBytes(bdata);
字节被写入文件。
Dart 追加到文件
在下一个示例中,我们将数据追加到文件。
import 'dart:io'; void main() async { final fname = 'words.txt'; final words = ['cloud', 'blue', 'book', 'solid']; final f = new File(fname); for (final word in words) { await f.writeAsString('$word\n', mode: FileMode.append); } }
要将数据追加到文件,我们使用 FileMode.append
模式。
Dart IOSink 写入
IOSink
的 write
方法将一个对象写入 sink。
import 'dart:io'; void main() { final fname = 'test.txt'; final f = File(fname); final sink = f.openWrite(); sink.write('current datetime: ${DateTime.now()}\n'); sink.close(); }
该示例将当前日期时间写入 sink。
final sink = f.openWrite();
从 File
对象,我们使用 openWrite
方法打开 sink。
sink.write('current datetime: ${DateTime.now()}\n');
数据通过 write
写入 sink。
sink.close();
我们关闭 IOSink
以释放系统资源。
Dart IOSink writeAll
IOSink
的 writeAll
函数会遍历给定的对象并将它们按顺序写入。
import 'dart:io'; void main() { final fname = 'words2.txt'; final words = ['sky', 'ocean', 'pen', 'rock', 'storm', 'falcon']; final f = File(fname); final sink = f.openWrite(); sink.writeAll(words, "\n"); sink.close(); }
在示例中,我们使用 writeAll
将列表的内容写入 sink。
来源
在本文中,我们展示了如何在 Dart 中写入文件。
作者
列出 所有 Dart 教程。