Методы копирования файлов Node.js: fs, fs-extra и Streams

Чтобы скопировать файл в Node.js, вы можете использовать несколько методов. Вот несколько примеров:

  1. Использование модуля fs:

    const fs = require('fs');
    // Copy file synchronously
    fs.copyFileSync('source.txt', 'destination.txt');
    // Copy file asynchronously
    fs.copyFile('source.txt', 'destination.txt', (err) => {
    if (err) throw err;
    console.log('File copied successfully!');
    });

    Метод fs.copyFileSyncкопирует файл синхронно, а fs.copyFileкопирует файл асинхронно и предоставляет функцию обратного вызова для обработки любых ошибок.

  2. Использование модуля fs-extra:
    Модуль fs-extra— это популярный пакет, предоставляющий дополнительные утилиты файловой системы. Он предлагает простой метод копирования файлов:

    const fs = require('fs-extra');
    // Copy file
    fs.copy('source.txt', 'destination.txt')
    .then(() => console.log('File copied successfully!'))
    .catch(err => console.error(err));
  3. Использование потоков.
    Потоки позволяют эффективно копировать большие файлы по частям. Вот пример использования встроенного модуля stream:

    const fs = require('fs');
    const sourceStream = fs.createReadStream('source.txt');
    const destinationStream = fs.createWriteStream('destination.txt');
    sourceStream.pipe(destinationStream)
    .on('finish', () => console.log('File copied successfully!'))
    .on('error', err => console.error(err));

    В этом методе из исходного файла создается поток, доступный для чтения, и поток, доступный для записи, для файла назначения. Метод pipeиспользуется для передачи данных из исходного потока в целевой поток.