nodejs之windows下使用fs.mkdir

本文探讨了在Windows环境中使用Node.js创建目录时遇到的问题及解决办法。详细介绍了如何通过递归方式确保多级目录正确建立,并分析了路径指定及错误处理的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在此之前需要说明一下,windows下使用nodejs取路径时需要在前面加上一个'.'。这很奇怪,比如:'/cache/t' 直接这样写是执行不了的。需要变成:'./cache/t'。

windows下使用mkdir时发现根本创建不了一个目录,但对比一下自己之前写的例子,发现:当有多个路径时,比如:'./cache/tt',如果当前目录下没有cache目录,则会在你写的function里执行throw err;

var fs = require('fs');
fs.mkdir('./cache/tt', 0776, function(err){
    if(err) throw err;// 如果没有cache目录,则抛出异常
    else {
    // my code
    // 存在cache目录时执行
    }
})

通过yss上面的分析,已经知道下面要做的事了。就是对每一层目录循环创建了~

看下面代码:

/* *
 * nkdir for windows (md command)
 * @params is the same as the mkdir
*/
function mkdirs(p, mode, callback){
	callback = callback || function(){};
	/* first should be . */
	if(p.charAt(0) != '.'){
		callback(p);
		return;
	}
	/* split it */
	var ps = p.split('/'), len = ps.length, i=1, tmp;
	while(i++<len){
		tmp = ps.slice(0,i).join('/');
		//console.log(tmp)
		//path.exists(tmp, function(exists){
			//if(!exists){
				fs.mkdir(tmp, mode);
				//console.log(i+": "+tmp)
			//}
		//});
	}
	callback();
}

但是写上面代码的时候,我发现不能通过path.exists去做。如果把上面的'//'的注释条去掉的话。输出的结果:

E:\code\node>node e\http.js
./cache
./cache/ppt
./cache/ppt/img
./cache/ppt/img/imgloadlazy
6: ./cache/ppt/img/imgloadlazy
6: ./cache/ppt/img/imgloadlazy
6: ./cache/ppt/img/imgloadlazy
很奇怪了吧~

这个问题有待yss之后去寻找,也希望看到这篇文章的你给我解答。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值