流式文件操作
在 Github 上编辑
有时我们需要对文件操作进行更精细的控制。 Deno 提供了一个用于文件操作的底层接口,可以用于此目的。
在我们的第一个示例中,我们将演示如何使用可写流。 要处理任何底层文件操作,我们必须首先打开文件。
const output = await Deno.open("example.txt", {
create: true,
append: true,
});
我们现在可以从输出中获取写入器。 这会自动处理在完成时关闭文件。
const outputWriter = output.writable.getWriter();
在我们对写入器执行任何操作之前,我们应该确保它已准备就绪。
await outputWriter.ready;
让我们向文件写入一些文本
const outputText = "I love Deno!";
const encoded = new TextEncoder().encode(outputText);
await outputWriter.write(encoded);
现在我们关闭写入流(和文件)
await outputWriter.close();
对于我们的下一个示例,让我们从文件中读取文本!
const input = await Deno.open("example.txt");
让我们从输入中获取一个读取器
const inputReader = input.readable.getReader();
const decoder = new TextDecoder();
让我们从文件中读取每个块并将其打印到控制台。
while (true) {
const result = await inputReader.read();
if (result.done) {
break;
}
console.log(`Read chunk: ${decoder.decode(result.value)}`);
}
使用 Deno CLI 在本地运行此示例
deno run --allow-read --allow-write https://docs.deno.org.cn/examples/scripts/streaming_files.ts