使用fs批量创建文件夹

nodejs yekong

当然,你可以创建一个函数来检查指定的目录是否存在,如果不存在,则创建它们。以下是一个实现示例:

const fs = require('fs');

function createDirectories(directories) {
  directories.forEach(directory => {
    // 判断目录是否存在
    if (!fs.existsSync(directory)) {
      // 如果不存在则创建目录
      fs.mkdirSync(directory, { recursive: true }, err => {
        if (err) {
          console.error(`创建 ${directory} 目录出错:`, err);
        } else {
          console.log(`${directory} 目录创建成功!`);
        }
      });
    } else {
      console.log(`${directory} 目录已存在。`);
    }
  });
}

// 要创建的目录列表
const directories = ['js', 'css', 'images', 'fonts'];

// 调用函数
createDirectories(directories);

这个函数接受一个包含目录名称的数组,然后遍历这个数组,对于每个目录,使用 fs.existsSync 检查是否存在,如果不存在,则使用 fs.mkdirSync 创建它。

请注意,这里我使用了同步方法(例如 fs.existsSyncfs.mkdirSync)。在某些情况下,这可能是合适的,特别是在初始化或配置脚本中。但在高吞吐量的服务器环境中,你可能希望使用异步版本,以便不阻塞事件循环。

异步方式

const fs = require('fs');

function createDirectory(directory) {
  // 检查目录是否存在
  fs.access(directory, err => {
    if (err) {
      // 如果目录不存在,则创建
      fs.mkdir(directory, { recursive: true }, err => {
        if (err) {
          console.error(`创建 ${directory} 目录出错:`, err);
        } else {
          console.log(`${directory} 目录创建成功!`);
        }
      });
    } else {
      console.log(`${directory} 目录已存在。`);
    }
  });
}

function createDirectories(directories) {
  directories.forEach(directory => {
    createDirectory(directory);
  });
}

// 要创建的目录列表
const directories = ['js', 'css', 'images', 'fonts'];

// 调用函数
createDirectories(directories);

我将目录创建的逻辑分离到了一个新的createDirectory函数中,并使用了fs.access来异步检查目录是否存在。如果目录不存在,则使用fs.mkdir来异步创建它。

这样,整个操作都是非阻塞的,更适合在并发环境中使用。

喜欢