fs-extra mkdirp()方法

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

mkdirp 方法(源自 mkdirp 包,但已被 fs-extra 集成)用于递归地创建目录,即如果父目录不存在,它会先创建父目录,然后创建目标目录。

mkdirp 方法接受至少一个参数:要创建的目录的路径(path),以及一个可选的配置对象(options)。配置对象可以包含与目录创建相关的选项,如文件模式(mode)和是否允许覆盖已存在的目录(尽管 mkdirp 本身不会覆盖目录,但相关选项可能用于其他兼容方法)。

基本用法

fse.mkdirp('/path/to/directory')
  .then(() => {
    console.log('目录已创建(包括任何必要的父目录)!');
  })
  .catch(err => {
    console.error('创建目录失败:', err);
  });

使用配置对象(可选)

你可以传递一个配置对象来指定目录的权限(mode)等选项。然而,请注意,mkdirpfs-extra 中的实现可能不会直接接受所有可能的 fs.mkdir 选项,因为它主要是为了向后兼容而保留的。对于更高级的选项,你可能需要使用 fs-extra 的其他方法或查阅最新的文档。

const options = {
  mode: 0o755 // 设置目录权限为 755(rwxr-xr-x)
};

fse.mkdirp('/path/to/directory', options)
  .then(() => {
    console.log('目录已创建(包括任何必要的父目录),并设置了权限!');
  })
  .catch(err => {
    console.error('创建目录失败:', err);
  });

注意:在 fs-extra 的较新版本中,mkdirp 方法可能已经被 mkdirsensureDir 方法取代或重命名,以提供更清晰的 API。

使用 async/await 语法

由于 mkdirp 方法返回一个 Promise,你可以使用 async/await 语法来更优雅地处理异步操作和错误。

const createDirectory = async () => {
  try {
    await fse.mkdirp('/path/to/directory');
    console.log('目录已创建(包括任何必要的父目录)!');
  } catch (err) {
    console.error('创建目录失败:', err);
  }
};

createDirectory();

注意事项

  • 如果目录已经存在,mkdirp 方法将不会抛出错误,而是简单地返回成功。
  • 创建目录操作可能会因为权限问题、磁盘空间不足、路径名无效或其他文件系统错误而失败。
  • 在 Windows 上,目录的创建行为可能与 Unix-like 系统略有不同,但 fs-extra 通常会尽量保持一致性。

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