fs-extra: копировать файлы без перезаписи - PullRequest
0 голосов
/ 03 июля 2018

Я использую метод копирования fs-extra для копирования файлов из источника в место назначения. Мой вариант использования - создать копию файла с именем, например, если в месте назначения существует файл с таким же именем. Метод копирования модуля fs-extra перезаписывает файл назначения.

1 Ответ

0 голосов
/ 04 июля 2018

Вы можете попробовать что-то вроде этого:

const fs = require('fs-extra');

async function copy(src, dest) {
  try {
    await fs.copy(src, dest, { overwrite: false, errorOnExist: true });
    return true;
  } catch (error) {
    if (error.message.includes('already exists')) {
      return false;
    }
    throw error;
  }
}

async function copyWithoutOverwrite(src, dest, maxAttempts) {    
  try {
    if (!await copy(src, dest)); {
      for (let i = 1; i <= maxAttempts; i++) {
        if (await copy(src, `${dest}_copy${i}`)) {
          return;
        }
      }
    }
  } catch (error) {
    console.error(error);
  }
}

const src = '/tmp/testfile';
const dest = '/tmp/mynewfile';
const maxAttempts = 10;

copyWithoutOverwrite(src, dest, maxAttempts);
...