用NodeJS的时候,我在操作日志记录或者文件上传时,难免遇到了路径的创建;执行fs.mkdir会得到报错,创建的路径上一级路径不存在,这时候需要先把上一级路径创建以后,才能继续创建当前路径内容。
这是一个繁琐的判断过程,我干脆写成了一个模块提供给大家使用。
创建一个mkdir.js模块,代码如下:
var fs = require('fs');
var path = require('path');
exports.mkdirSync = function(dirPath){
if(dirPath == null || dirPath == "") return;
dirPath = exports.isAbsolute(dirPath) ? path.normalize(dirPath) : path.join(process.cwd(), dirPath);
if(fs.existsSync(dirPath)) return;
var arr = dirPath.split(path.sep);
var index = arr.length - 1;
var tempStr = arr[index];
while(tempStr == "" && arr.length > 0){
index--;
tempStr = arr[index];
}
if(tempStr == "") return;
var newPath = dirPath.substring(0, dirPath.length - tempStr.length - 1);
if(!fs.existsSync(newPath)) exports.mkdirSync(newPath);
fs.mkdirSync(dirPath);
}
exports.isAbsolute = function(filePath){
filePath = path.normalize(filePath);
if(filePath.substring(0, 1) == "/") return true;
if(filePath.search(/[\w]+:/) == 0) return true;
return false;
};
使用方法:
var mkdir = require('./mkdir').mkdirSync;
mkdir('./a/b/c');