Nodejs模块:path
当前版本:v 10.16.0
一,获取文件相关信息
1,path.basename(filepath[, ext])
获取该文件的文件名,如果有扩展名,则一起显示扩展名;
如果不想展示扩展名,只想展示文件名,那么第二个参数可选,传入具体的文件扩展名,返回文件名而不包括扩展名。
path.basename('/foo/bar/baz/asdf/quux.html');
// Returns: 'quux.html' path.basename('/foo/bar/baz/asdf/quux.html', '.html');
// Returns: 'quux'
2,path.dirname(filepath)
获取该文件所在的目录
path.dirname('/foo/bar/baz/asdf/quux');
// Returns: '/foo/bar/baz/asdf'
3,path.extname(filepath)
获取该文件的扩展名,需要注意的是,如果传入的路径以“.”符号结束,则返回“.”,如果最后没有“.”符号,则输出空,如果以“.”符号开头,也输出空。
path.extname('index.html');
// Returns: '.html' path.extname('index.coffee.md');
// Returns: '.md' path.extname('index.');
// Returns: '.' path.extname('index');
// Returns: '' path.extname('.index');
// Returns: ''
二,将文件路径组合拼接
1,path.join([...paths])
把传入的path拼起来,再执行path.normalize,注意,这个返回的不是绝对路径,只是拼起来的path,然后经过了normalize的处理
// slb文件位置在/Users/yanchenyu/github/node-soa-server/middleware/slb // 此时我们在node-soa-server下执行命令 path.join('./middleware', 'slb')
// middleware/slb
// 不是绝对路径,只是拼起来的path path.resolve('./middleware', 'slb')
// /Users/yanchenyu/github/node-soa-server/middleware/slb
2,path.resolve([...paths])
这个方法是用得最多的,一般path模块都是用这个方法,返回的是绝对路径,如果看返回值,有个很笨但是很有用的方法,就是等同于直接在shell下依次敲命令cd path,比如:
path.resolve('/foo/bar', './baz'); // 等同于 cd /foo/bar
cd ./baz // Returns: '/foo/bar/baz'
path.resolve('/foo/bar', '/tmp/file/');
// Returns: '/tmp/file' path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');
// if the current working directory is /home/myself/node,
// this returns '/home/myself/node/wwwroot/static_files/gif/image.gif'
还有一个要注意的,path.resolve会去掉末尾的/,而path.join不会,原因就是path.normalize会保留末尾/,但两者都会去掉中间多余的/
path.resolve('.//middleware', 'slb/')
// /Users/yanchenyu/github/node-soa-server/middleware/slb path.join('.//middleware', 'slb/')
// middleware/slb/
3,path.normalize(path)
这个就是刚刚path.join内部操作的最后一步,它主要是将一些不合理的path给规范化,比如:
1️⃣去除重复的/
上面给过例子了,不再说
2️⃣path中有.或..的,按cd .或cd ..处理
path.normalize('/middleware/./slb/.././') // /middleware/
3️⃣末尾的/不变,有就保留没有就去掉,保持一致
三,文件路径的拆分和聚合,按对象来处理
1,path.parse(path)
返回的是一个pathObject对象,有五个属性(root, dir, base, ext, name):
path.parse('/home/user/dir/file.txt');
// Returns:
// { root: '/',
// dir: '/home/user/dir',
// base: 'file.txt',
// ext: '.txt',
// name: 'file' }
2,path.format(pathObject)
传入pathObject,有五个属性(可选),刚好是上面的五个
const pathObject = { root: '/',
dir: '/home/user/dir',
base: 'file.txt',
ext: '.txt',
name: 'file' }; path.format(pathObject); // /home/user/dir/file.txt
四,路径解析
path.relative(from, to)
path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb');
// Returns: '../../impl/bbb'
总结:
path模块主要是用来处理文件路径的相关操作,主要比较常用的还是resolve,然后包括上面提到的这几个api,还有几个不常用的可以参考官方文档。
end
Nodejs模块:path的更多相关文章
- NodeJS之path模块
NodeJS之path模块 常用的主要有如下工具函数: 1. path.basename(path[, ext]) 2. path.extname(path) 3. path.dirname(path ...
- # nodejs模块学习: express 解析
# nodejs模块学习: express 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需要开发者创造大量的轮子 ...
- NodeJS 模块开发及发布详解
NodeJS 是一门年轻的语言,扩展模块并不太全,经常我们想用某个模块但是却找不到合适的.比如前两天我需要使用hmac和sha1来做签名,就没有找到一个比较好用的模块,这时候就需要我们自己来实现相应的 ...
- node的核心模块path
//导入模块path var path=require("path"); //path.basename :输出文件名+后缀 //console.log(path.basename ...
- Nodejs:Path对象
模块Path: path.normalize(url) path.join(url1, url2, ..) path.resolve(url1, url2, ..) path.relative(url ...
- NodeJS模块、包、NPM
1.NodeJS模块 每一个Nodejs都是一个NodeJS模块,包括JS文件,JSON文本文件,二进制模块文件. a.模块的应用 新建一个文件mytest. ...
- 核心模块Path
核心模块Path 作用:用于帮助程序员来操作硬盘上的路径. 核心模块注意点:当引用核心模块的时候直接require('模块名'),不需要加任何路径或者后缀. Path中的常用API: dirname( ...
- nodejs模块xml2js解析xml的坑
在一个项目中,用到nodejs模块xml2js解析xml,xml的数据如下: <xml> <MsgId>6197906553041859764</MsgId> &l ...
- NodeJS 模块&函数
NodeJS 模块&函数 nodejs的多文件操作通过模块系统实现,模块和文件一一对应.文件本身可以是javascript代码.JSON或编译过的C/C++扩展 基本用法 nodeJS通过ex ...
- es6模块 nodejs模块和 typescript模块
es6模块 import和export nodejs模块 require和module.exports typescript模块 module和export
随机推荐
- JavaScript动画实例:运动的字母特效
已知圆的坐标方程为: X=R*SIN(θ) Y=R*COS(θ) (0≤θ≤2π) 给定初始坐标位置(X,Y),按照圆的坐标方程,从角度angle = 0开始,每间隔angleSpeed = ...
- Java 添加、删除、格式化Word中的图片
本文介绍使用Spire.Cloud.SDK for Java提供的ImagesApi接口来操作Word中的图片.具体可通过addImage()方法添加图片.deleteImage()方法删除图片.up ...
- LSTM理解
简介 LSTM(Long short-term memory,长短期记忆)是一种特殊的RNN,主要是为了解决长序列训练过程中的梯度消失问题.以下先从RNN介绍. 简说RNN RNN(Recurrent ...
- Python 3.9 beta2 版本发布了,看看新特性?
随着 Python 3.9.0b1 的发布,即开发周期中计划的四个 beta 版本的首个,Python 3.9 的功能已经是完善了.在 10 月发布最终版本之前,还会有许多测试和稳定性方面的工作要做. ...
- LinuX操作系统基础------>了解文件结构和相关的文件操作
了解LinuX文件系统 熟悉LinuX的文件结构 熟悉LinuX的基本操作指令 利用所学指令进行指令组合操作 什么是文件?什么是目录? 文件:一般是一个独立的东西,可以通过某些工具将其打开 目录:可以 ...
- java_String类、StringBuilder类、Arrays类、Math类的使用
String类 java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如 “abc” )都可以被看作是实现此类的实例 构造方法 java.lang.String :此类不需 ...
- C#LeetCode刷题之#389-找不同(Find the Difference)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4062 访问. 给定两个字符串 s 和 t,它们只包含小写字母. ...
- 解Bug之路-dubbo流量上线时的非平滑问题
前言 笔者最近解决了一个困扰了业务系统很久的问题.这个问题只在发布时出现,每次只影响一两次调用,相较于其它的问题来说,这个问题有点不够受重视.由于种种原因,使得这个问题到了业务必须解决的程度,于是就到 ...
- Jdk1.7下的HashMap源码分析
本文主要讨论jdk1.7下hashMap的源码实现,其中主要是在扩容时容易出现死循环的问题,以及put元素的整个过程. 1.数组结构 数组+链表 示例图如下: 常量属性 /** * The defau ...
- 【NOIP必备攻略】 基本noilinux使用方法
现在linux系统已经成为了NOIP竞赛的一大操作系统,如果连最基础的操作都不会,那就更别提怎么得分了,万一操作失误,可就爆零了.所以小编特意发这样一篇博客,教你快速上手noilinux! ▎ 常用操 ...