Я хочу иметь возможность отслеживать скорость копирования с помощью методов node.js и pipe
, чтобы я мог отображать индикатор выполнения, индикатор скорости и, в конечном итоге, оценку времени.
ДляСейчас, просматривая некоторые ссылки, я предполагаю, что мне придется поиграть с writeStream.bytesWritten , но я не уверен, как правильно его использовать: работает ли он с pipe
?Или я должен использовать writeableStream.write();
?
Некоторый контекст:
Поскольку мне нужно скопировать несколько файлов, я использую do ... while
Зацикливать и увеличивать счетчик при каждом запуске копии.Он работает нормально, но я не могу использовать writeStream.bytesWritten
для контроля скорости передачи.
Ниже приведен код, который я сейчас использую, console.log(firstCopy.bytesWritten);
дважды возвращает 0
:
//Launch copy process
do {
let readableStream = fs.createReadStream(fileList[i]);//This is the source file
let firstCopy = fs.createWriteStream(path.join(copyPathOne, fileName[i])),
secondCopy = fs.createWriteStream(path.join(copyPathTwo, fileName[i]));//These are the targets
readableStream.pipe(firstCopy);//We launch the first copy
readableStream.pipe(secondCopy);//And the second copy
console.log(firstCopy.bytesWritten);//Here we monitor the amount of bytes written
++i;//Then we increment the counter
} while (i < fileList.length);//And we repeat the process while the counter is < to the number of files
Я также пытался:
console.log(writeStream.bytesWritten(firstCopy));//Error: writeStream is not defined
Почему вы используете do ... while
, а не forEach
?
Я перебираю массив.Я мог бы использовать forEach
, но, поскольку я не совсем понимаю, как это работает, я предпочел использовать do ... while
.Кроме того, я подумал, что это будет простой метод для копирования каждого файла, и что он будет ждать конца копии (pipe
), как сказано здесь:
Выражение, вычисленное послекаждый проход по петле.Если условие оценивается как true, оператор выполняется повторно.https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/do...while