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 相关文章推荐
从父页面读取和操作iframe中内容方法
Jul 25 Javascript
passwordStrength 基于jquery的密码强度检测代码使用介绍
Oct 08 Javascript
JQuery教学之性能优化
May 14 Javascript
Javascript中的对象和原型(二)
Aug 12 Javascript
JQuery和PHP结合实现动态进度条上传显示
Nov 23 Javascript
js实现的xml对象转json功能示例
Dec 24 Javascript
详解vue父子模版嵌套案例
Mar 04 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
Mar 29 Javascript
selenium 与 chrome 进行qq登录并发邮件操作实例详解
Apr 06 Javascript
360提示[高危]使用存在漏洞的JQuery版本的解决方法
Oct 27 jQuery
jQuery代码优化方法总结
Jan 29 jQuery
微信小程序实现点击空白隐藏的方法示例
Aug 13 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
新52大事件
2020/03/03 欧美动漫
JavaScript与HTML结合的基本使用方法整理
2015/10/12 PHP
初识PHP中的Swoole
2016/04/05 PHP
简单谈谈 php 文件锁
2017/02/19 PHP
基于Codeigniter框架实现的student信息系统站点动态发布功能详解
2017/03/23 PHP
Yii2 队列 shmilyzxt/yii2-queue 简单概述
2017/08/02 PHP
PHP的mysqli_ssl_set()函数讲解
2019/01/23 PHP
PHP7新功能总结
2019/04/14 PHP
Laravel 5.4前后台分离,通过不同的二级域名访问方法
2019/10/13 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
jquery和css3实现的炫酷时尚的菜单导航
2014/09/01 Javascript
Jquery easyui开启行编辑模式增删改操作
2016/01/14 Javascript
浏览器复制插件zeroclipboard使用指南
2016/03/26 Javascript
AngularJS 视图详解及示例代码
2016/08/17 Javascript
使用async、enterproxy控制并发数量的方法详解
2018/01/02 Javascript
vue.js,ajax渲染页面的实例
2018/02/11 Javascript
vue2.0 实现导航守卫的具体用法(路由守卫)
2018/05/17 Javascript
Python实现的质因式分解算法示例
2018/05/03 Python
Python返回数组/List长度的实例
2018/06/23 Python
python ChainMap 合并字典的实现步骤
2019/06/11 Python
PyQt+socket实现远程操作服务器的方法示例
2019/08/22 Python
Python实现TCP通信的示例代码
2019/09/09 Python
python分别打包出32位和64位应用程序
2020/02/18 Python
Tensorflow tf.nn.atrous_conv2d如何实现空洞卷积的
2020/04/20 Python
Tensorflow加载Vgg预训练模型操作
2020/05/26 Python
使用Python FastAPI构建Web服务的实现
2020/06/08 Python
python3环境搭建过程(利用Anaconda+pycharm)完整版
2020/08/19 Python
Python的Tqdm模块实现进度条配置
2021/02/24 Python
屈臣氏越南官网:Watsons越南
2021/01/14 全球购物
应届生护士求职信
2013/11/01 职场文书
护士求职自荐信范文
2014/03/19 职场文书
2015年店长工作总结范文
2015/04/08 职场文书
简单的辞职信模板
2015/05/12 职场文书
2015年污水处理厂工作总结
2015/05/26 职场文书
吧主申请感言怎么写
2015/08/03 职场文书
2019脱贫攻坚工作总结报告范本!
2019/08/06 职场文书