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 split 的用法和定义 js split分割字符串成数组的实例代码
May 13 Javascript
JavaScript去除空格的三种方法(正则/传参函数/trim)
Feb 06 Javascript
判定是否原生方法的JS代码
Nov 12 Javascript
JQuery实现表格动态增加行并对新行添加事件
Jul 30 Javascript
JavaScript简单判断复选框是否选中及取出值的方法
Aug 13 Javascript
JavaScript学习笔记之ES6数组方法
Mar 25 Javascript
原生js实现网易轮播图效果
Apr 10 Javascript
Ionic2开发环境搭建教程
Aug 20 Javascript
JavaScript 判断对象中是否有某属性的常用方法
Jun 14 Javascript
微信小程序签到功能
Oct 31 Javascript
详解vuejs中执行npm run dev出现页面cannot GET/问题
Apr 26 Javascript
jQuery cookie的公共方法封装和使用示例
Jun 01 jQuery
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
linux下为php添加curl扩展的方法
2011/07/29 PHP
为PHP5.4开启Zend OPCode缓存
2014/12/26 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
2016/11/14 PHP
DOM精简教程
2006/10/03 Javascript
JS 日期验证正则附asp日期格式化函数
2009/09/11 Javascript
jQuery前台数据获取实现代码
2011/03/16 Javascript
javascript真的不难-回顾一下基础知识
2013/01/15 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
JS对象转换为Jquery对象实现代码
2013/12/29 Javascript
浅谈Javascript Base64 加密解密
2014/12/28 Javascript
js实现根据身份证号自动生成出生日期
2015/12/15 Javascript
输入法的回车与消息发送快捷键回车的冲突解决方法
2016/08/09 Javascript
javascript数据类型详解
2017/02/07 Javascript
vue的一个分页组件的示例代码
2017/12/25 Javascript
bootstrap table支持高度百分比的实例代码
2018/02/28 Javascript
VueJs组件之父子通讯的方式
2018/05/06 Javascript
在Vue 中使用Typescript的示例代码
2018/09/10 Javascript
Node.js 多线程完全指南总结
2019/03/27 Javascript
ES6知识点整理之函数数组参数的默认值及其解构应用示例
2019/04/17 Javascript
如何在 Vue 中使用 JSX
2021/02/14 Vue.js
python 中文字符串的处理实现代码
2009/10/25 Python
python聊天程序实例代码分享
2013/11/18 Python
从头学Python之编写可执行的.py文件
2017/11/28 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
2017/12/11 Python
python实现一组典型数据格式转换
2018/12/15 Python
Python实现操纵控制windows注册表的方法分析
2019/05/24 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
2019/06/24 Python
Python 如何提高元组的可读性
2019/08/26 Python
基于Python执行dos命令并获取输出的结果
2019/12/30 Python
详解appium自动化测试工具(monitor、uiautomatorviewer)
2021/01/27 Python
编程实现当输入某产品代码则打印出该产品记录的功能
2014/05/03 面试题
母亲追悼会答谢词
2014/01/27 职场文书
2014年乡镇团委工作总结
2014/12/18 职场文书
2016年十一促销广告语
2016/01/28 职场文书
一文了解MySQL二级索引的查询过程
2022/02/24 MySQL
Elasticsearch Recovery 详细介绍
2022/04/19 Java/Android