将流保存到vibe.d中的文件中

  • 本文关键字:文件 vibe 保存 d vibed
  • 更新时间 :
  • 英文 :


我想保存一个vibe.d流,如HTTPClientResponse.bodyReader(类型为InterfaceProxy!InputStream(,以及其他潜在的vib.d流到文件中,如何在不将所有数据复制到RAM的情况下,以内存高效的方式做到这一点?

通常,使用HTTP客户端下载文件时,您可以使用vibe.inet.ultransfer包,该包提供download便利功能,用于执行HTTP请求、处理重定向并将最终输出存储到文件中。

download(url, file);

但是,如果你想获取原始输入流(例如,在不处理重定向时(,你可以使用vibe.core.file:openFile打开/创建一个文件作为文件流,然后写入。

要写入文件流,您有两个选项:

  1. 您可以直接致电file.write(otherStream)
  2. 否则,您可以使用vibe.core.stream:pipe

FileStream对象上直接调用write是vibe.d urltransfer模块内部使用的方法,也建议用于文件,因为它将直接从流读取到写缓冲区,而不是使用pipe将使用的额外临时缓冲区。

样品:

// createTrunc creates a file if it doesn't exist and clears it if it does exist
// You might want to use readWrite or append instead.
auto fil = openFile(filename, FileMode.createTrunc);
scope(exit) fil.close();
fil.write(inputStream);

最新更新