fs-extra:复制文件而不会覆盖

时间:2018-07-03 15:52:33

标签: node.js filesystems fs-extra

我正在使用fs-extra的复制方法将文件从源复制到目标。我的用例是创建一个文件副本,其名称类似于目的地中是否存在相同名称的文件。 fs-extra模块的复制方法将覆盖目标文件。

1 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

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);