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 相关文章推荐
JS类库Bindows1.3中的内存释放方式分析
Mar 08 Javascript
javascript 面向对象全新理练之继承与多态
Dec 03 Javascript
防止页面被iframe(兼容IE,Firefox火狐)
Jul 04 Javascript
在子窗口中关闭父窗口的一句代码
Oct 21 Javascript
让alert不出现弹窗的两种方法
May 18 Javascript
jquery实现简单实用的弹出层效果代码
Oct 15 Javascript
javascript 判断页面访问方式电脑或者移动端
Sep 19 Javascript
jquery pagination插件动态分页实例(Bootstrap分页)
Dec 23 Javascript
JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例
Jan 29 Javascript
记录一次开发微信网页分享的步骤
May 07 Javascript
vue动态子组件的两种实现方式
Sep 01 Javascript
JavaScript如何优化逻辑判断代码详解
Jun 08 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中文URL编解码(urlencode()rawurlencode()
2010/07/03 PHP
PHP取整数函数常用的四种方法小结
2012/07/05 PHP
php获取操作系统语言代码
2013/11/04 PHP
学习php中的正则表达式
2014/08/17 PHP
PHP 二维数组和三维数组的过滤
2016/03/16 PHP
PHP实现递归目录的5种方法
2016/10/27 PHP
PHP通过get方法获得form表单数据方法总结
2018/09/12 PHP
JS控件的生命周期介绍
2012/10/22 Javascript
cookie的复制与使用记住用户名实现代码
2013/11/04 Javascript
jQuery中innerWidth()方法用法实例
2015/01/19 Javascript
JS实现灵巧的下拉导航效果代码
2015/08/25 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
2015/10/02 Javascript
移动端横屏的JS代码(beta)
2016/05/16 Javascript
微信js-sdk地理位置接口用法示例
2016/10/12 Javascript
xcode中获取js文件的路径方法(推荐)
2016/11/05 Javascript
AngularJS路由实现页面跳转实例
2017/03/03 Javascript
解决使用Vue.js显示数据的时,页面闪现原始代码的问题
2018/02/11 Javascript
基于bootstrap页面渲染的问题解决方法
2018/08/09 Javascript
解决layer弹层遮罩挡住窗体的问题
2018/08/17 Javascript
vue-cli 打包后提交到线上出现 "Uncaught SyntaxError:Unexpected token" 报错
2018/11/06 Javascript
Vue分页插件的前后端配置与使用
2019/10/09 Javascript
浅析Vue 防抖与节流的使用
2019/11/14 Javascript
[48:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第二场 1月29日
2021/03/11 DOTA
Python正则表达式的使用范例详解
2014/08/08 Python
Python入门篇之字符串
2014/10/17 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
2018/01/23 Python
Python实现的删除重复文件或图片功能示例【去重】
2019/04/23 Python
德国、奥地利和瑞士最大的旅行和度假门户网站:HolidayCheck
2019/11/14 全球购物
使用索引有什么好处
2016/07/27 面试题
介绍一下OSI七层模型
2012/07/03 面试题
应用数学自荐书范文
2013/11/24 职场文书
护理助产毕业生的求职信
2014/03/02 职场文书
二审答辩状格式
2015/05/22 职场文书
公务员处分决定书
2015/06/25 职场文书
2019年描写人生经典诗句大全
2019/07/08 职场文书
导游词之天津盘山
2019/11/01 职场文书