nodejs判断文件、文件夹是否存在,不存在则创建 |
您所在的位置:网站首页 › nodejs文件夹 › nodejs判断文件、文件夹是否存在,不存在则创建 |
nodejs判断文件、文件夹是否存在,不存在则创建
判断文件是否存在
1、仅判断文件是否存在
2、判断文件是否存在,并创建
判断文件夹及子文件是否存在,创建出父文件夹
判断文件是否存在 开始的时候使用的是fs.exists判断文件,后面在查文档时偶然看到fs.exists不被提倡使用,而且fs.existsSync方法已经过时淘汰了,下面说说 exists 和 acess 的 区别。 1、fs.exists()的回调参数只有一个参数,并且这个参数是个boolean类型,用于判断文件是否存在,然而在其它Node.js中其他回调函数中第一个参数通常是error,这就容易导致混淆。 2、使用fs.access() 的回调函数也是只有一个参数,而且参数是 err ,更加的方便使用 1、仅判断文件是否存在 1上代码: 1234567891011121314/* 判断文件是否存在的函数 *@path_way, 文件路径 */ function isFileExisted(path_way) { return new Promise((resolve, reject) => { fs.access(path_way, (err) => { if (err) { reject(false);//"不存在" } else { resolve(true);//"存在" } }) }) }; 12返回一个promise 对象,通过 async await 同步使用, 需要使用 try catch 包裹 防止 意想不到的错误 12345678910/* 使用 *@path_way, 文件路径 */ async ()( try{ const isExisted = await isFileExisted(path_way); }catch (error){ console.log(error); } ); 2、判断文件是否存在,并创建 1上代码: 1234567891011121314151617181920/* 判断文件是否存在的函数 *@path_way, 文件路径 */ function isFileExisted(path_way) { return new Promise((resolve, reject) => { fs.access(path_way, (err) => { if (err) { fs.appendFileSync(path_way, '{"data":[],"total":0}', 'utf-8', (err) => { if (err) { return console.log('该文件不存在,重新创建失败!') } console.log("文件不存在,已新创建"); }); reject(false); } else { resolve(true); } }) }) }; 1234 创建文件的时候 需要用到fs.appendFileSync 方法, 第一个参数是路径, 第二个是写入的内容, 你也可以单独写出来, 第三个是 appendFileSync方法的返回格式 默认是 Buffer 类型, 这里为了防止编码混乱,设置成 ‘utf-8’判断文件夹及子文件是否存在,创建出父文件夹 注意: 这里的路径 pathStr 需要使用 绝对路径 1234567891011121314151617181920212223242526272829303132/* 用于判断路径是否存在, 如果不存在,则创建一个 */ async function mkdirPath(pathStr) { var projectPath = path.join(process.cwd()); var tempDirArray = pathStr.split('\'); for (var i = 0; i < tempDirArray.length; i++) { projectPath = projectPath + '/' + tempDirArray[i]; if (await isFileExisted(projectPath)) { var tempstats = fs.statSync(projectPath); if (!(tempstats.isDirectory())) { fs.unlinkSync(projectPath); fs.mkdirSync(projectPath); } } else { fs.mkdirSync(projectPath); } } return projectPath; }; /* 判断文件存在 */ function isFileExisted(path_way) { return new Promise((resolve, reject) => { fs.access(path_way, (err) => { if (err) { reject(false);//"不存在" } else { resolve(true);//"存在" } }) }) }; |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |