0

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

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

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

我的问题是,是否可以对 fs.copy 进行取消操作?例如,如何在尝试复制 2GB 文件时停止 fs.copy 操作?

除了 fs.copy 之外是否还有其他选择来实现我想要的?

4

1 回答 1

1

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

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

那行得通吗?

于 2016-07-22T07:21:51.663 回答