0x01 path模块方法:
- 返回路径中的最后一部分:
path.basename(p, [ext]); //p:路径 //ext:输入一个文件后缀名,如果匹配到该路径中有该后缀名,则省略该后缀名,只显示文件名。 path.basename("c:a/b/index.js", [ext]); //index.js path.basename("c:a/b/index.js", ".js"); //index
- 返回路径中代表文件夹的部分:
path.dirname(p); path.dirname("c:a/b/index.js"); //c:a/b
- 返回路径中文件的后缀名:
path.extname(p); path.dirname("c:a/b/index.js"); //.js path.dirname("c:a/b/index."); //. path.dirname("c:a/b/index"); //返回空字符串
- 判断参数是否一个绝对路径:
path.isAbsolute(path); path.isAbsoulute("c:/a/b/index.js"); //true - 绝对路径 path.isAbsoulute("./c/index.js"); //false - 相对路径
- 将路劲解析为一个对象:
path.parse(pathString); path.parse("c:/a/b/index.js"); //解析出来的对象 { root: 'c:/', dir: 'c:/a/b', base: 'index.js', ext: '.js', name: 'index' }
- 路径拼接:
path.join();
0x02 dirname和filename
下面这两个属性是 Node 中的全局变量:
__dirname
- 获取当前该文件,所在目录的,绝对路径,(不包含自己)
__filename
- 获取当前该文件,所在的,绝对路径,(包含自己)
在文件操作中,使用相对路径是不可靠的,因为在 Node 中,操作的路径被设计为,相对于执行 node 命令所处的路径。
例如:
这个文件夹中有一个app.js,还有一个public文件夹,里面有一个a.txt。
- 需要在app.js中将a.txt中的数据读出来。
如果使用相对路径,那么当我退出32593这个文件夹,跳转到上一级目录:Users文件夹,执行node 32593/app.js 那么这个时候就会在Users这个文件中中找a.txt。
为了解决这个问题,只需要将把相对路径更改为绝对路径就可以了。这个时候就可以使用__dirname来动态获取该文件现在所在的目录。
补充:模块中的标识路径(require)和这里的路径没关系,不受影响。
const fs = require("fs"); const path = require("path"); fs.readFile(path.join(__dirname, "./public/a.txt"), "utf8", function(err, data){ if(err){ return console.log("读取失败!", err); } console.log(data); });
版权声明:《 node.js - path模块 》为Jack.甄原创文章,转载请注明出处!
最后编辑:2021-8-17 17:08:29