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 相关文章推荐
基于jquery的无刷新分页技术
Jun 11 Javascript
javascript中的数字与字符串相加实例分析
Aug 14 Javascript
ExtJS4 Grid改变单元格背景颜色及Column render学习
Feb 06 Javascript
javascript页面动态显示时间变化示例代码
Dec 18 Javascript
js使用for循环查询数组中是否存在某个值
Aug 12 Javascript
jQuery stop()用法实例详解
Jul 28 Javascript
基于vue循环列表时点击跳转页面的方法
Aug 31 Javascript
vue debug 二种方法
Sep 16 Javascript
JS使用Chrome浏览器实现调试线上代码
Jul 23 Javascript
JavaScript浅层克隆与深度克隆示例详解
Sep 01 Javascript
一文帮你理解PReact10.5.13源码
Apr 03 Javascript
vue中利用mqtt服务端实现即时通讯的步骤记录
Jul 01 Vue.js
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中关于普通表单多文件上传的处理方法
2011/03/25 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
2014/05/04 PHP
Symfony模板的快捷变量用法实例
2016/03/17 PHP
javascript之ESC(第二类混淆)
2007/05/06 Javascript
语义化 H1 标签
2008/01/14 Javascript
JavaScript Konami Code 实现代码
2009/07/29 Javascript
Javascript面向对象扩展库代码分享
2012/03/27 Javascript
js操作iframe的一些方法介绍
2013/06/25 Javascript
JS实现可直接显示网页代码运行效果的HTML代码预览功能实例
2015/08/06 Javascript
JavaScript希尔排序、快速排序、归并排序算法
2016/05/08 Javascript
JS面试题---关于算法台阶的问题
2016/07/26 Javascript
JS仿QQ好友列表展开、收缩功能(第一篇)
2017/07/07 Javascript
jquery+css实现下拉列表功能
2017/09/03 jQuery
微信小程序时间标签和时间范围的联动效果
2019/02/15 Javascript
详解Vue 全局变量,局部变量
2019/04/17 Javascript
了解javascript中的Dom操作
2019/05/27 Javascript
bootstrapValidator表单校验、更改状态、新增、移除校验字段的实例代码
2020/05/19 Javascript
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
在Python下使用Txt2Html实现网页过滤代理的教程
2015/04/11 Python
用python脚本24小时刷浏览器的访问量方法
2018/12/07 Python
Python实现一个数组除以一个数的例子
2019/07/20 Python
python3.7 sys模块的具体使用
2019/07/22 Python
如何使用django的MTV开发模式返回一个网页
2019/07/22 Python
在Python中os.fork()产生子进程的例子
2019/08/08 Python
PyQt5+python3+pycharm开发环境配置教程
2020/03/24 Python
PyInstaller运行原理及常用操作详解
2020/06/13 Python
Python利用socket模块开发简单的端口扫描工具的实现
2021/01/27 Python
利用HTML5绘制点线面组成的3D图形的示例
2015/05/12 HTML / CSS
会计电算化个人自我评价
2013/11/17 职场文书
员工工作表扬信范文
2014/01/13 职场文书
赡养老人协议书
2014/04/21 职场文书
高一学生评语大全
2014/04/25 职场文书
优秀班主任事迹材料
2014/12/16 职场文书
小学优秀班主任材料
2014/12/17 职场文书
课题研究阶段性总结
2015/08/13 职场文书
springboot应用服务启动事件的监听实现
2022/04/06 Java/Android