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 相关文章推荐
window.name代替cookie的实现代码
Nov 28 Javascript
JS原型对象通俗"唱法"
Dec 27 Javascript
密码强度检测效果实现原理与代码
Jan 04 Javascript
.net,js捕捉文本框回车键事件的小例子(兼容多浏览器)
Mar 11 Javascript
JavaScript获取XML数据附示例截图
Mar 05 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
Mar 13 Javascript
Jquery uploadify上传插件使用详解
Jan 13 Javascript
Angular2  NgModule 模块详解
Oct 19 Javascript
详解如何较好的使用js
Dec 16 Javascript
node thread.sleep实现示例
Jun 20 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
Feb 14 Javascript
js实现盒子拖拽动画效果
Aug 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面向对象的使用教程 简单数据库连接
2006/11/25 PHP
CodeIgniter钩子用法实例详解
2016/01/20 PHP
Zend Framework自定义Helper类相关注意事项总结
2016/03/14 PHP
php实现在站点里面添加邮件发送的功能
2020/04/28 PHP
laravel中命名路由的使用方法
2017/02/24 PHP
php实现微信公众号企业转账功能
2018/10/01 PHP
PHP常用正则表达式精选(推荐)
2019/05/28 PHP
jquery 模板的应用示例
2013/11/12 Javascript
简单的代码实现jquery定时器
2013/11/17 Javascript
JS 打印功能代码可实现打印预览、打印设置等
2014/10/31 Javascript
jquery插件推荐 jquery.cookie
2014/11/09 Javascript
JS 动态加载js文件和css文件 同步/异步的两种简单方式
2016/09/23 Javascript
简单的jQuery拖拽排序效果的实现(增强动态)
2017/02/09 Javascript
Vue中的v-cloak使用解读
2017/03/27 Javascript
详解JS中的attribute属性
2017/04/25 Javascript
详解ES6 Promise对象then方法链式调用
2018/10/20 Javascript
微信小程序自定义联系人弹窗
2020/05/26 Javascript
何时/使用 Vue3 render 函数的教程详解
2020/07/25 Javascript
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
Python实现的金山快盘的签到程序
2013/01/17 Python
python字典多条件排序方法实例
2014/06/30 Python
用Python登录Gmail并发送Gmail邮件的教程
2015/04/17 Python
python 时间戳与格式化时间的转化实现代码
2016/03/23 Python
Python自动化部署工具Fabric的简单上手指南
2016/04/19 Python
Python的Django应用程序解决AJAX跨域访问问题的方法
2016/05/31 Python
关于反爬虫的一些简单总结
2017/12/13 Python
在Python中增加和插入元素的示例
2018/11/01 Python
python 执行文件时额外参数获取的实例
2018/12/18 Python
python爬虫爬取笔趣网小说网站过程图解
2019/11/18 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
2020/04/12 Python
Python 没有main函数的原因
2020/07/10 Python
法国在线药房:1001Pharmacies
2021/03/07 全球购物
如何高效率的查找一个月以内的数据
2012/04/15 面试题
财务经理岗位职责
2013/11/09 职场文书
开学第一周日记(三篇范文)
2019/08/23 职场文书
MySQL root密码的重置方法
2021/04/21 MySQL