Копирование файла с использованием 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

Будет ли это работать?

Другие вопросы по тегам