详解nodeJS之路径PATH模块


Posted in NodeJs onMay 31, 2017

前面的话

path模块包含一系列处理和转换文件路径的工具集,通过 require('path') 可用来访问这个模块。本文将详细介绍path模块

路径组成

【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
console.log(path.relative('C:/test/aaa', 'D:/bbb'));//D:\bbb

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
nodejs获取本机内网和外网ip地址的实现代码
Jun 01 NodeJs
nodejs 实现模拟form表单上传文件
Jul 14 NodeJs
Nodejs为什么选择javascript为载体语言
Jan 13 NodeJs
Nodejs从有门道无门菜鸟起飞必看教程
Jul 20 NodeJs
用NodeJS实现批量查询地理位置的经纬度接口
Aug 16 NodeJs
nodejs入门教程一:概念与用法简介
Apr 24 NodeJs
NodeJS 中Stream 的基本使用
Jul 30 NodeJs
NVM安装nodejs的方法实用步骤
Jan 16 NodeJs
nodejs中各种加密算法的实现详解
Jul 11 NodeJs
nodejs读取图片返回给浏览器显示
Jul 25 NodeJs
nodejs简单抓包工具使用详解
Aug 23 NodeJs
nodejs处理tcp连接的核心流程
Feb 26 NodeJs
NodeJS实现微信公众号关注后自动回复功能
May 31 #NodeJs
nodejs操作mysql实现增删改查的实例
May 28 #NodeJs
详解nodejs微信jssdk后端接口
May 25 #NodeJs
mac下的nodejs环境安装的步骤
May 24 #NodeJs
Nodejs搭建wss服务器教程
May 24 #NodeJs
Nodejs中Express 常用中间件 body-parser 实现解析
May 22 #NodeJs
深入理解nodejs中Express的中间件
May 19 #NodeJs
You might like
PHP中的魔术方法总结和使用实例
2015/05/11 PHP
PHP将Excel导入数据库及数据库数据导出至Excel的方法
2015/06/24 PHP
php实现在站点里面添加邮件发送的功能
2020/04/28 PHP
php之可变变量的实例详解
2017/09/12 PHP
jQuery 学习第七课 扩展jQuery的功能 插件开发
2010/05/17 Javascript
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
2014/06/07 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
jQuery中hover方法和toggle方法使用指南
2015/02/27 Javascript
详解webpack与SPA实践之开发环境搭建
2017/12/18 Javascript
Angular4.x通过路由守卫进行路由重定向实现根据条件跳转到相应的页面(推荐)
2018/05/10 Javascript
VUE-Table上绑定Input通过render实现双向绑定数据的示例
2018/08/27 Javascript
HTML+JavaScript实现扫雷小游戏
2019/09/30 Javascript
node.js Promise对象的使用方法实例分析
2019/12/26 Javascript
js判断浏览器的环境(pc端,移动端,还是微信浏览器)
2020/12/24 Javascript
如何在Node和浏览器控制台中打印彩色文字
2020/01/09 Javascript
微信小程序新闻网站详情页实例代码
2020/01/10 Javascript
[52:31]VP vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python实现115网盘自动下载的方法
2014/09/30 Python
在Python中操作时间之mktime()方法的使用教程
2015/05/22 Python
Python变量和字符串详解
2017/04/29 Python
Tornado协程在python2.7如何返回值(实现方法)
2017/06/22 Python
Python一个简单的通信程序(客户端 服务器)
2019/03/06 Python
python实现扫描局域网指定网段ip的方法
2019/04/16 Python
Python read函数按字节(字符)读取文件的实现
2019/07/03 Python
Python2和3字符编码的区别知识点整理
2019/08/08 Python
springboot配置文件抽离 git管理统 配置中心详解
2019/09/02 Python
python实现银行管理系统
2019/10/25 Python
python中dict()的高级用法实现
2019/11/13 Python
python对数组进行排序,并输出排序后对应的索引值方式
2020/02/28 Python
Python web如何在IIS发布应用过程解析
2020/05/27 Python
亲子阅读的活动方案
2014/08/15 职场文书
领导班子遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
民政局标准版离婚协议书
2014/12/01 职场文书
银行服务理念口号
2015/12/25 职场文书
汉语拼音教学反思
2016/02/22 职场文书
如何用python反转图片,视频
2021/04/24 Python