用电子保存后如何停止访问文件

How do i stop accessing a file after saving it with electron

我目前正在将文件 (blob) 保存到文件系统。我使用 electron 的 'fs' 包。

这是当前代码:

const assetBuffer = Buffer.from(await blob.arrayBuffer());
this.electronService.fs.createWriteStream(filePath).write(assetBuffer);

保存文件后,当我尝试打开文件时收到错误或警告。 “该文件当前正在被另一个应用程序访问”。所以我假设 write 函数仍在后台访问文件并且保存从未完全完成。

请问有什么方法可以完全完成保存,然后再打开文件吗? 目前它通过重新启动应用程序来工作。但这不是最佳选择。

一个可能的原因是您没有关闭流。为此,您只需将流存储在变量中,然后 close 一旦 write 像这样完成写入:

const assetBuffer = Buffer.from(await blob.arrayBuffer());
const writeStream = this.electronService.fs.createWriteStream(filePath);
writeStream.write(assetBuffer, (err) => {
  if (err) console.error(err);
  writeStream.close((erro) => console.error(erro));
});