node.JS路径解析之PATH模块使用方法详解


Posted in Javascript onFebruary 06, 2020

路径组成

path.dirname(p)

返回路径p所在的目录

var path = require('path');

console.log(path.dirname('/foo/bar/baz/asdf/a.txt')); // /foo/bar/baz/asdf

console.log(path.dirname('/foo/bar/baz/asdf/')); // /foo/bar/baz

console.log(path.dirname('C:/test/aaa')); // C:/test

path.basename(p[, ext])

返回路径的最后一个部分,即文件名。参数ext为需要截掉的后缀内容 

var path = require('path');

console.log(path.basename('/foo/bar/baz/asdf/a.txt')); // a.txt

console.log(path.basename('/foo/bar/baz/asdf/a.txt','.txt')); // a

console.log(path.basename('/foo/bar/baz/asdf/')); // asdf

console.log(path.basename('C:/test/aaa')); // aaa

path.extname(p)

返回路径p的扩展名,从最后一个'.'到字符串的末尾。如果最后一个部分没有'.',或者路径是以'.'开头,则返回空字符串

var path = require('path');

console.log(path.extname('/foo/bar/baz/asdf/a.txt')); // .txt

console.log(path.extname('/foo/bar/baz/asdf/a.txt.b')); // .b

console.log(path.extname('/foo/bar/baz/asdf/a.')); // .

console.log(path.extname('C:/test/aaa/.')); // ''

console.log(path.extname('C:/test/aaa')); // ''

分隔符

path.sep

返回对应平台下的文件分隔符,win下为'\',*nix下为'/'

var path = require('path');

console.log(path.sep); // win下为\,*nix下为/

console.log('foo\\bar\\baz'.split(path.sep)); // [ 'foo', 'bar', 'baz' ]

console.log('foo/bar/baz'.split(path.sep)); // win下返回['foo/bar/baz'],但在*nix系统下会返回['foo','bar','baz']

path.delimiter

返回对应平台下的路径分隔符,win下为';',*nix下为':'

var path = require('path');

console.log(path.delimiter); //win下为“;”,*nix下为“:”

console.log(path.sep); // win下为\,*nix下为/

规范化

path.normalize(p)

规范化路径,处理冗余的“..”、“.”、“/”字符。发现多个斜杠时,会替换成一个斜杠。当路径末尾包含一个斜杠时,保留。Windows系统使用反斜杠 

var path = require('path');

console.log(path.normalize('a/b/c/../user/bin'));//a\b\user\bin

console.log(path.normalize('a/b/c///../user/bin/'));//a\b\user\bin\

console.log(path.normalize('a/b/c/../../user/bin'));//a\user\bin

console.log(path.normalize('a/b/c/.././///../user/bin/..'));//a\user

console.log(path.normalize('a/b/c/../../user/bin/../../'));//a\

console.log(path.normalize('a/../../user/bin/../../'));//..\

console.log(path.normalize('a/../../user/bin/../../../../'));//..\..\..\

console.log(path.normalize('./a/.././user/bin/./'));//user\bin\

path.join([path1], [path2], [...])

将多个路径结合在一起,并转换为规范化路径 

var path = require('path');

console.log(path.join('////./a', 'b////c', 'user/'));//\a\b\c\user

console.log(path.join('a', '../../', 'user/'));//..\user\

绝对和相对

path.resolve([from ...], to)

从源地址 from 到目的地址 to 的绝对路径,类似在shell里执行一系列的cd命令

path.resolve('foo/bar', '/tmp/file/', '..', 'a/../subfile')

类似于:

cd foo/bar

cd /tmp/file/

cd ..

cd a/../subfile

pwd

[注意]如果某个from或to参数是绝对路径(比如 'E:/abc',或是以“/”开头的路径),则将忽略之前的from参数

var path = require('path');

console.log(path.resolve('.', 'testFiles/..', 'trdLayer'));//D:\project\trdLayer

console.log(path.resolve('..', 'testFiles', 'a.txt'));//D:\testFiles\a.txt

console.log(path.resolve('D:', 'abc', 'D:/a'));//D:\a

console.log(path.resolve('abc', 'ok.gif'));//D:\project\abc\ok.gif

console.log(path.resolve('abc', '..', 'a/../subfile')); //D:\project\subfile

path.isAbsolute(path)

path是一个绝对路径(比如 'E:/abc'),或者是以“/”开头的路径,二者都会返回true

var path = require('path');

console.log(path.isAbsolute('../testFiles/secLayer'));//false

console.log(path.isAbsolute('./join.js'));//false

console.log(path.isAbsolute('temp'));//false

console.log(path.isAbsolute('/temp/../..'));//true

console.log(path.isAbsolute('E:/github/nodeAPI/abc/efg'));//true

console.log(path.isAbsolute('///temp123'));//true

path.relative(from, to)

获取从 from 到 to 的相对路径,可以看作 path.resolve 的相反实现

path.resolve(from, path.relative(from, to)) == path.resolve(to)

var path = require('path');

console.log(path.relative('C:\\\test', 'C:\\\impl\\bbb'));//..\impl\bbb

console.log(path.relative('C:/test/aaa', 'C:/bbb'));//..\..\bbb

更多关于node.JS路径解析的方法请查看下面的相关链接

Javascript 相关文章推荐
JavaScript入门之基本函数详解
Oct 21 Javascript
Javascript实现DIV滚动自动滚动到底部的代码
Mar 01 Javascript
用jquery写的一个万年历(自写)
Jan 20 Javascript
Jquery中国地图热点效果-鼠标经过弹出提示层信息的简单实例
Feb 12 Javascript
jQuery前端分页示例分享
Feb 10 Javascript
js制作支付倒计时页面
Oct 21 Javascript
JavaScript实现大图轮播效果
Jan 11 Javascript
基于node.js依赖express解析post请求四种数据格式
Feb 13 Javascript
JS实现图片预加载之无序预加载功能代码
May 12 Javascript
webpack分离css单独打包的方法
Jun 12 Javascript
优雅的elementUI table单元格可编辑实现方法详解
Dec 23 Javascript
Websocket 向指定用户发消息的方法
Jan 09 Javascript
node.JS二进制操作模块buffer对象使用方法详解
Feb 06 #Javascript
JavaScript实现左右滚动电影画布
Feb 06 #Javascript
6种JavaScript继承方式及优缺点(小结)
Feb 06 #Javascript
使用node.JS中的url模块解析URL信息
Feb 06 #Javascript
Node.JS获取GET,POST数据之queryString模块使用方法详解
Feb 06 #Javascript
node.JS事件机制与events事件模块的使用方法详解
Feb 06 #Javascript
如何通过javaScript去除字符串两端的空白字符
Feb 06 #Javascript
You might like
PHP Curl多线程原理实例详解
2013/11/06 PHP
php curl模拟post请求和提交多维数组的示例代码
2015/11/19 PHP
Laravel学习教程之从入口到输出过程详解
2017/08/27 PHP
php实现微信企业付款到个人零钱功能
2018/10/09 PHP
jQuery温习篇 强大的JQuery选择器
2010/04/24 Javascript
EasyUI中datagrid在ie下reload失败解决方案
2015/03/09 Javascript
jQuery实现文本展开收缩特效
2015/06/03 Javascript
基于jQuery实现Div窗口震动特效代码-代码简单
2015/08/28 Javascript
JavaScript中日期的相关操作方法总结
2015/10/24 Javascript
浅析javascript的return语句
2015/12/15 Javascript
Javascript中arguments对象的详解与使用方法
2016/10/04 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
2016/11/02 Javascript
Bootstrap php制作动态分页标签
2016/12/23 Javascript
微信小程序模板之分页滑动栏
2017/02/10 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
2017/07/10 Javascript
vue中eventbus被多次触发以及踩过的坑
2017/12/02 Javascript
微信小程序仿RadioGroup改变样式的处理方案
2018/07/13 Javascript
vue axios重复点击取消上一次请求封装的方法
2019/06/19 Javascript
Node.js系列之连接DB的方法(3)
2019/08/30 Javascript
单线程JavaScript实现异步过程详解
2020/05/19 Javascript
JS实现无限轮播无倒退效果
2020/09/21 Javascript
[40:19]2018完美盛典CS.GO表演赛
2018/12/17 DOTA
python实现监控linux性能及进程消耗性能的方法
2014/07/25 Python
python模块之paramiko实例代码
2018/01/31 Python
python使用Turtle库绘制动态钟表
2018/11/19 Python
python中metaclass原理与用法详解
2019/06/25 Python
Dower & Hall官网:英国小众轻奢珠宝品牌
2019/01/31 全球购物
Europcar澳大利亚官网:全球汽车租赁领域的领导者
2019/03/24 全球购物
贝佳斯官方网站:Borghese
2020/05/08 全球购物
促销活动总结模板
2014/07/01 职场文书
2014年采购工作总结
2014/11/20 职场文书
海上钢琴师的观后感
2015/06/11 职场文书
小学五年级(说明文3篇)
2019/08/13 职场文书
python可视化大屏库big_screen示例详解
2021/11/23 Python
Win11查看设备管理器
2022/04/19 数码科技
tree shaking对打包体积优化及作用
2022/07/07 Java/Android