fs-extra copy()方法

栏目: NodeJs 发布时间:2024-12-24

copy 方法用于异步复制文件或目录。它接受两个必需的参数:源路径(src)和目标路径(dest),以及一个可选的配置对象(options)。

基本用法

fse.copy('/path/to/source', '/path/to/dest')
  .then(() => {
    console.log('复制成功!');
  })
  .catch(err => {
    console.error('复制失败:', err);
  });

使用配置对象

options 对象可以包含以下属性:

  • overwrite: 布尔值,指定是否覆盖目标位置的文件或目录。默认为 true
  • dereference: 布尔值,指定是否解除符号链接的引用。默认为 false
  • preserveTimestamps: 布尔值,指定是否保留文件的时间戳。默认为 false
  • filter: 函数,用于过滤要复制的文件或目录。该函数接受源路径和目标路径作为参数,并返回一个布尔值,指示是否应复制该文件或目录。

例如,如果你只想复制 .txt 文件,你可以这样做:

const filter = (src, dest) => {
  return src.endsWith('.txt');
};

fse.copy('/path/to/source', '/path/to/dest', { filter })
  .then(() => {
    console.log('只复制了 .txt 文件!');
  })
  .catch(err => {
    console.error('复制失败:', err);
  });

处理错误

由于 copy 方法返回一个 Promise,你可以使用 .catch() 方法来处理可能出现的错误。此外,你也可以使用 async/await 语法来更优雅地处理异步操作和错误。

const copyFiles = async () => {
  try {
    await fse.copy('/path/to/source', '/path/to/dest');
    console.log('复制成功!');
  } catch (err) {
    console.error('复制失败:', err);
  }
};

copyFiles();

注意事项

  • 如果源路径和目标路径相同,copy 方法将不会执行任何操作。
  • 如果目标路径已经存在且是一个目录,copy 方法会将源路径的内容复制到该目录中。
  • 如果目标路径已经存在且是一个文件,并且 overwrite 选项为 true,则目标文件将被覆盖。
  • 复制操作可能会因为权限问题、磁盘空间不足或其他 I/O 错误而失败。

通过掌握 fs-extracopy 方法,你可以轻松地在 Node.js 应用程序中复制文件和目录。无论是简单的文件复制还是复杂的文件结构迁移,fs-extra 都提供了强大而灵活的工具来满足你的需求。

本文地址:https://www.tides.cn/p_node-fs-extra-copy