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 指南/入门基础
Nov 30 Javascript
Mootools 1.2教程 选项卡效果(Tabs)
Sep 15 Javascript
JavaScript加强之自定义callback示例
Sep 21 Javascript
利用jQuery实现可输入搜索文字的下拉框
Oct 23 Javascript
JS 页面计时器示例代码
Oct 28 Javascript
js 自动播放的实例代码
Nov 19 Javascript
JQuery简单实现锚点链接的平滑滚动
May 03 Javascript
javascript实现显示和隐藏div方法汇总
Aug 14 Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
Jan 26 Javascript
你真的了解BOM中的history对象吗
Feb 13 Javascript
vue-cli3中vue.config.js配置教程详解
May 29 Javascript
vue3.0 加载json的方法(非ajax)
Oct 26 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源代码数组统计count分析
2011/08/02 PHP
PHP 处理TXT文件(打开/关闭/检查/读取)
2013/05/13 PHP
php中使用PHPExcel读写excel(xls)文件的方法
2014/09/15 PHP
简单说说PHP优化那些事(经验分享)
2014/11/27 PHP
标准PHP的AES加密算法类
2015/03/12 PHP
php创建图像具体步骤
2017/03/13 PHP
Yii实现复选框批量操作实例代码
2017/03/15 PHP
Extjs学习笔记之八 继承和事件基础
2010/01/08 Javascript
javascript 原型链维护和继承详解
2014/11/26 Javascript
JavaScript实现点击自动选择TextArea文本的方法
2015/07/02 Javascript
jquery+CSS3实现淘宝移动网页菜单效果
2015/08/31 Javascript
浅析JavaScript中的对象类型Object
2016/05/26 Javascript
JavaScript中日期函数的相关操作知识
2016/08/03 Javascript
JQuery和HTML5 Canvas实现弹幕效果
2017/01/04 Javascript
angular forEach方法遍历源码解读
2017/01/25 Javascript
利用node实现一个批量重命名文件的函数
2017/12/21 Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
2018/01/15 Javascript
Vue路由切换时的左滑和右滑效果示例
2018/05/29 Javascript
ndm:NPM的桌面GUI应用程序
2018/10/15 Javascript
python基础教程之元组操作使用详解
2014/03/25 Python
Python赋值语句后逗号的作用分析
2015/06/08 Python
Python语言描述KNN算法与Kd树
2017/12/13 Python
python json 递归打印所有json子节点信息的例子
2020/02/27 Python
详解Python中的Lock和Rlock
2021/01/26 Python
英国航空官网:British Airways
2016/09/11 全球购物
惊艳的手工时装首饰:Migonne Gavigan
2018/02/23 全球购物
销售心得体会
2014/01/02 职场文书
行政内勤岗位职责
2014/04/07 职场文书
幼儿园教研活动总结
2014/04/30 职场文书
工伤事故证明
2014/10/20 职场文书
2014年学校德育工作总结
2014/12/05 职场文书
2015年试用期工作总结
2014/12/12 职场文书
大学生读书笔记大全
2015/07/01 职场文书
田径运动会通讯稿
2015/07/18 职场文书
Mysql官方性能测试工具mysqlslap的使用简介
2021/05/21 MySQL
浅谈Python魔法方法
2021/06/28 Java/Android