Node.js创建文件夹或使用现有文件夹

我已经阅读了Node.js的文档,除非我错过了一些内容,否则它不会告诉某些操作(特别是)中包含哪些参数fs.mkdir()正如您在文档中看到的那样,它不是很多。

当前,我有以下代码,该代码尝试创建一个文件夹或使用现有的文件夹:

fs.mkdir(path,function(e){
    if(!e || (e && e.code === 'EEXIST')){
        //do something with contents
    } else {
        //debug
        console.log(e);
    }
});

但是我想知道这是正确的方法吗?检查代码EEXIST是否正确知道文件夹已存在?我知道我可以fs.stat()在创建目录之前执行此操作,但这已经是文件系统的两大难题。

其次,是否有Node.js的完整或至少是更详细的文档,其中包含有关错误对象包含的内容,参数表示的内容等的详细信息。

蛋蛋2020/03/24 10:55:31

就像Teemu Ikonen的答案的一种较新的替代方法一样,它非常简单且易于阅读,它就是使用软件包ensureDir方法fs-extra

它不仅可以用作内置fs模块的公然替代品,而且除了fs包装的功能外,还具有许多其他功能

ensureDir顾名思义,方法可确保目录存在。如果目录结构不存在,则会创建它。喜欢mkdir -p不只是结束文件夹,如果还不存在,则会创建整个路径。

上面提供的是async版本。它还具有同步方法,以方法的形式执行此操作ensureDirSync

JinJin2020/03/24 10:55:31

我认为,使用Javascript编码时,最好不要计算文件系统的命中率。但是,(1)statmkdir(2)mkdir和支票(或丢弃)错误代码,这两种方式都是你想要做什么正确的方法。

老丝2020/03/24 10:55:30

如果您想要一种快速又脏的衬板,请使用此:

fs.existsSync("directory") || fs.mkdirSync("directory");
小胖Gil2020/03/24 10:55:30

的node.js文档fs.mkdir基本上遵循的Linux手册页mkdir(2)这表示EEXIST如果存在该路径,但也不会显示该目录,如果您走这条路线,该目录不会创建一个笨拙的极端情况。

最好调用fs.stat,它会告诉您该路径是否存在以及它是否是单个调用中的目录,因此更好对于(我假设是)目录已经存在的正常情况,它只是一个文件系统命中。

这些fs模块方法是本机C API的精简包装,因此您必须检查一下node.js文档中引用的手册页以获取详细信息。