Копирование файла с использованием node.js с возможностью отмены
Я реализую приложение node.js, которое копирует массив путей к файлам в конкретное место назначения.
Метод прост, допустим, у меня есть 10 путей к файлам в исходных путях и 1 путь в качестве пути назначения. поэтому каждый путь From будет скопирован в пункт назначения ONE By ONE с использованием функции fs.copy.
Однако, поскольку массив файлов может быть большим с точки зрения количества и размера, поэтому я пытаюсь реализовать функцию, которая позволяет пользователю отменить операцию копирования файлов и удаления того, что уже было скопировано.
У меня вопрос: возможно ли сделать операцию отмены на fs.copy? Например, как я могу остановить операцию fs.copy, когда она пытается скопировать файл размером 2 ГБ?
Есть ли какие-либо альтернативы, кроме fs.copy, для достижения того, чего я хочу?
1 ответ
Я полагаю, что вы могли бы просто передать команду readstem потоку записи, а также unpipe и unlink, когда вы хотите остановить копирование и удалить файл назначения.
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
Будет ли это работать?