path路径模块
文章目录
- path路径模块
- 一. path模块作用
- 二. path方法
- (1) `path.join([...paths])`拼接路径
- (2) `path.basename(paht[,ext])`返回文件名称
- (3) `path.delimiter` 路径分隔符
- (4) `path.dirname(path)` 目录名
- (5) `path.extname(path)` path扩展名
- (6) `path.sep` 路径片段分隔符
- (7) `path.parse(path)` path字符串返回path对象
- (8) `path.format(pathObject)`
- (9) path.isAbsolute(path): 是否为绝对路径
- (10) path.normalize(path): 规范化给定的`path`
- (11) path.relative(from, to): 从from到to的相对路径
- (12) `path.resolve([...paths])`绝对路径
一. path模块作用
用于处理文件和目录的路径
二. path方法
(1) path.join([...paths])
拼接路径
path.join()
方法使用平台特定的分隔符把全部给定的path片段拼接到一起, 并规范化生成路径
- 参数说明:
...paths
: String 一个路径片段的序列- 长度为零的
path
片段会被忽略. 如果连接后的路径字符串是一个长度为零的字符串, 则返回.
, 表示当前工作目录 - 如果片段为
..
, 则忽略前一个
- 长度为零的
(2) path.basename(paht[,ext])
返回文件名称
返回
path
的最后一部分(文件名称)
-
参数说明:
- path: string 路径.
- ext: string 可选的文件扩展名
-
案例:
const path = require("path") let baseName = path.basename('./files/1.txt') let baseName1 = path.basename('./files/1.txt', '.txt') console.log(baseName) //1.txt console.log(baseName1) //1
-
不同环境的区别
- POSIX:
C:\\files\\1.txt
- Windows:
1.txt
统一操作系统上的结果, 可以使用
path.posix
path.posix.baseName('./files/1.txt')
- POSIX:
(3) path.delimiter
路径分隔符
提供平台特定的路径分隔符
-
Windows上是
;
-
POSIX是
:
let url = "C:\\Windows\\system32;C:\\Windows\\system32" console.log(path.delimiter) //; console.log(url.split(path.delimiter)) //[ 'C:\\Windows\\system32', 'C:\\Windows\\system32' ]
(4) path.dirname(path)
目录名
let url1 = "C:\\Windows\\system32;"
let dirname = path.dirname(url1)
console.log(dirname) //c:\Windows
(5) path.extname(path)
path扩展名
返回path的扩展名, 即
path
最后一部分的最后一个.
(句号)字符到字符串结束.
let url1 = "C:\\Windows\\system32\\node\\files\\1.txt"
let extname = path.extname(url1)
console.log(extname) //.txt
console.log(path.extname('index.')) // .
console.log(path.extname('index')) // ''
console.log(path.extname('.index')) // ''
(6) path.sep
路径片段分隔符
平台特定的路径片段分隔符
-
Windows上是
\
-
POSIX上是
/
let url1 = "C:\\Windows\\system32\\node\\files\\1.txt" let sep = path.sep // console.log(sep) // '\' console.log(url1.split(sep)) //[ 'C:', 'Windows', 'system32', 'node', 'files', '1.txt' ]
(7) path.parse(path)
path字符串返回path对象
path.parse(path)
方法返回一个对象, 对象的属性表示path的元素. 尾部文件分割符会被忽略.
-
返回对象的属性
-
dir: 目录名
-
root: 根目录
-
base: 带扩展名的文件名
-
name: 名称
-
ext: 扩展名
┌─────────────────────┬────────────┐ │ dir │ base │ ├──────┬ ├──────┬─────┤ │ root │ │ name │ ext │ " / home/user/dir / file .txt " └──────┴──────────────┴──────┴─────┘ (请无视以上字符串中的空格,它们只是为了布局)
let parse = path.parse(url1) // console.log(parse) /** { root: 'C:\\', dir: 'C:\\Windows\\system32\\node\\files', base: '1.txt', ext: '.txt', name: '1' } */
-
(8) path.format(pathObject)
会从一个对象返回一个路径字符串
-
注意点:
- 如果提供了
pathObject.dir
, 则pathObject.root
会被忽略 - 如果提供了
pathObject.base
存在, 则pathObject.ext
和pathObject.name
会被忽略
let formatObj = { dir: 'c:\\path', base: "1.txt" } console.log(path.format(formatObj)) //c:\path\1.txt
- 如果提供了
(9) path.isAbsolute(path): 是否为绝对路径
判定
path
是否为一个绝对路径. 如果给定的path
是一个长度为零的字符串, 则返回false
path.isAbsolute('//server'); // true
path.isAbsolute('\\\\server'); // true
path.isAbsolute('C:/foo/..'); // true
path.isAbsolute('C:\\foo\\..'); // true
path.isAbsolute('bar\\baz'); // false
path.isAbsolute('bar/baz'); // false
path.isAbsolute('.'); // false
(10) path.normalize(path): 规范化给定的path
规范化给定的
path
, 并解析..
和.
片段
let normalize = path.normalize('c:\\temp\\\\foo\\bar')
console.log(normalize)//c:\temp\foo\bar
(11) path.relative(from, to): 从from到to的相对路径
path.relative()
方法返回从from
到to
的相对路径(基于当前工作目录). 如果from
或to
传入了一个长度为零的字符串, 则当前工作目录会被用于代替长度为零的字符串
let relative = path.relative('./files/1.txt', './fs.js')
console.log(relative) // '..\..\fs.js'
(12) path.resolve([...paths])
绝对路径
...paths
一个路径或路径片段的序列, resolve把序列解析为一个绝对路径
- 给定的路径的序列是从右往左被处理的, 后面每个
path
被依次解析, 直到构造完成一个绝对路径. - 如果处理完全部的
path
片段后还未生成一个绝对路径, 则当前工作目录会被用上 - 生成的路径是规范化后的, 且末尾的斜杠会被删除, 除非路径被解析为根目录
- 长度为零的
path
片段会被忽略 - 如果没有传入
path
片段, 则path.resolve()
会返回当前工作目录的绝对路径