使用 node.js 复制文件并可能取消

Copying file using node.js with the possibility of cancellation

我正在实施一个 node.js 应用程序,它将一组文件路径复制到特定目标。

方法很简单,假设我在源路径有 10 个文件路径,目标路径有 1 个。因此,每个 From 路径都将使用 fs.copy 函数一个接一个地复制到目的地。

但是,由于文件数组在数量和大小方面可能很大,因此我正在尝试实现一项功能,允许用户取消复制文件和删除已复制文件的操作。

我的问题是,是否可以对fs.copy进行注销操作?例如,当它试图复制一个 2GB 的文件时,如何停止 fs.copy 操作?

Is/Are 除了 fs.copy 之外还有其他选择来实现我想要的吗?

我想您可以将读取流通过管道传输到写入流,然后在您想要停止复制并删除目标文件时取消管道和取消链接。

var from = fs.createReadStream(fromFilename)
  .pipe(to);
var to = fs.createWriteStream(toFilename)
  .on("unpipe", function() {
    fs.unlink(toFilename); // effectively deletes the file
  });

// triggered by user
from.unpipe(); // stops the copy, triggers the delete

这样行吗?