Node.js 复制文件/文件夹的实现

38 min read

Node.js 提供了 fs 模块来操作文件系统,可以利用 fs 模块的 API 来复制文件/文件夹。

复制文件的实现:

const fs = require('fs');

function copyFile(src, dest) {
  fs.copyFile(src, dest, (err) => {
    if (err) {
      console.error('Error copying file:', err);
    } else {
      console.log(`${src} was copied to ${dest}`);
    }
  });
}

copyFile('./test.txt', './new-test.txt');
  • fs.copyFile() 方法可以将一个文件复制到另一个位置。
  • 第一个参数是要复制的源文件路径。
  • 第二个参数是要复制到的目标文件路径。
  • 第三个参数是一个回调函数,用于处理复制文件的结果。

复制文件夹的实现:

const fs = require('fs');
const path = require('path');

function copyDir(src, dest) {
  fs.mkdirSync(dest);
  const files = fs.readdirSync(src);
  for (let file of files) {
    const srcPath = path.join(src, file);
    const destPath = path.join(dest, file);
    const stat = fs.statSync(srcPath);
    if (stat.isDirectory()) {
      copyDir(srcPath, destPath);
    } else {
      copyFile(srcPath, destPath);
    }
  }
}

function copyFile(src, dest) {
  fs.copyFileSync(src, dest);
  console.log(`${src} was copied to ${dest}`);
}

copyDir('./test-dir', './new-dir');
  • fs.mkdirSync() 方法可以创建一个新目录。
  • fs.readdirSync() 方法可以读取一个目录下的文件列表。
  • path.join() 方法可以将多个路径字符串连接起来。
  • fs.statSync() 方法可以获取一个文件或目录的状态信息。
  • 如果目标是一个子目录,则递归调用 copyDir() 函数。
  • 如果目标是一个文件,则调用 copyFile() 函数。