nodejs之windows下使用fs.mkdir

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

在此之前需要说明一下,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之后去寻找,也希望看到这篇文章的你给我解答。

Node.js中,`fs`模块提供了许多用于文件系统操作的函数,其中之一是`mkdir`函数。`mkdir`函数用于创建一个新目录。以下是`mkdir`函数的用法: ```javascript const fs = require('fs'); fs.mkdir(path, options, callback) ``` `path`参数是要创建的目录的完整路径,可以是相对路径或绝对路径。如果目录的上级目录不存在,那么`mkdir`函数将会失败。你可以使用`fs.mkdirSync`函数来同步创建目录,如果目录创建失败,将会抛出异常。 `options`参数是一个可选的对象,包含以下属性: - `recursive`:一个布尔值,指示是否应该创建多层目录。如果该值为`true`,则可以在创建目录时自动创建其上级目录。默认值为`false`。 `callback`参数是一个回调函数,当目录创建完成时将被调用。该函数接收两个参数:`err`和`data`。如果目录创建成功,`err`将为`null`,`data`将为新创建的目录的路径。如果创建失败,`err`将包含一个错误对象,`data`将为`undefined`。 以下是一个示例,演示如何使用`fs.mkdir`函数创建一个新目录: ```javascript const fs = require('fs'); fs.mkdir('myDir', { recursive: true }, (err, data) => { if (err) { console.error(err); } else { console.log('目录已创建:', data); } }); ``` 在此示例中,`mkdir`函数将会创建名为`myDir`的新目录,并将回调函数用于处理成功或失败的情况。注意`{ recursive: true }`参数表示可以创建多层目录,如果`myDir`目录的上级目录不存在,也将会被自动创建。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值