创建文件夹
目录结构
|— 20-mkdir.js
|
|
执行20-mkdir.js
|
|
目录结构变为
|— 20-mkdir.js
|— demo1
|— demo2
报错
什么情况下会报错呢?
文件夹已经存在
目录结构
|— 20-mkdir.js
|— demo1
|— demo2
这里的意思是原本就已经存在demo1和demo2,我们试着再创建一下
同样执行20-mkdir.js
|
|
报错信息为Error: EEXIST: file already exists
说文件夹已经存在。
不存在的文件夹
20-mkdir.js
|
|
执行20-mkdir.js
|
|
报错信息Error: ENOENT: no such file or directory
不存在的文件夹,因为我们并没有test文件夹,所以它不会帮我们创建,就直接报错。
创建层级目录
我们先来创建一个模块
mkdirs.js
|
|
在21-mkdirs.js中引入
|
|
这是大体的骨架,然后我们来完善mkdirs.js模块
|
|
写到这里我们来测试一下,在21-mkdirs.js中
|
|
执行
|
|
是我们想要的结果,我们得到了test和demo3
然而我们还有一种方法,那就是path模块自带的path.relative()方法
mkdirs.js中
|
|
其余不变,我们再来执行21-mkdirs.js
|
|
同样也能得到test和demo3。
以上两种方法的区别仅仅是多一个少一个/
好了,我们用第二种方法接着往下写
mkdirs.js
|
|
注意14行let folders = relativePath.split(path.sep);
中不能写成let folders = relativePath.split("/");
因为windows和POSIX平台上是不同的,需要用path.sep来代替。
然后我们执行一下21-mkdirs.js来测试一下
|
|
good!是我们想要的结果。
我们继续写
|
|
21-mkdirs.js
|
|
我们来执行一下21-mkdirs.js
目录结构发生了变化
|— 21-mkdirs.js
|— mkdirs.js
|— test
|— demo3
我们发现demo3并没有在test文件夹里面,所以我们还需要修改
mkdirs.js
|
|
我们再来执行21-mkdirs.js
目录结构
|— 21-mkdirs.js
|— mkdirs.js
|— test
|— demo3
这样就打成我们的目标了
注意点
我们更改一下目录结构
|— module
|— mkdirs.js
|— 21-mkdirs.js
再来执行21-mkdirs.js就会报错,说文件夹已存在,原因就在于mkdirs.js模块里的__dirname;
__dirname是相对于mkdirs.js模块的路径,而我们需要的是谁引用了mkdirs.js模块,路径就相对于谁,这里需要使用module.parent.
module/mkdirs.js
|
|
21-mkdirs.js
|
|
我们执行后,创建的目录如下
|— test
|— demo3
|— demo4
|— demo5
本文结束,感谢阅读。
本文作者:melody0z
本文链接:https://melodyvoid/Node/cycle-creation-folder.html
欢迎转载,转载请注明文本链接