javascript - 使用node.js复制文件并可以取消

标签 javascript node.js fs-extra

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

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

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

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

除了 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

这行得通吗?

关于javascript - 使用node.js复制文件并可以取消,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38520185/

相关文章:

javascript - Qualtrics JavaScript : Append an image over matrix text boxes

javascript - 使用 matchmedia 时缩短代码

javascript - 如何在expressjs应用程序中拒绝http请求?

node.js - 高级 Node 和快速 FCC 挑战中的数据库连接错误 - 护照用户的序列化

javascript - 为什么我无法删除在 Electron 中使用 fs-extra 创建的目录?

node.js - 使用 `ncp` 复制文件会抛出 : no such file or directory, mkdir

javascript - 如何获取 Angular 应用程序中的所有控制台错误消息

javascript - 在 CasperJS 中查询 getElementInfo 对象

node.js - 如何为所有端口添加 ssl 安全性