使用 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
这样行吗?
我正在实施一个 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
这样行吗?