1.path.join() 路径拼接
将多个路径片段拼接成一个完整的路径字符串
2.path.basename() 获取路径中的文件名
可以获取路径中的最后一部分,经常通过这个方法获取路径中的文件名
语法:
path.basename(path[,ext])
,返回路径中的最后一部分
- path:必选参数,表示一个路径的字符串
- ext:可选参数,表示文件扩展名
const firstPath = "d:\\name.wav";
path.basename(firstPath); //name.wav
path.basename(firstPath, path.extname(firstPath)); //name
path.extname(firstPath); //.wav
3.path.extname() 获取路径的扩展名
语法:path.extname(path)
4.path.dirname(path) 获取路径
用于获取路径中的目录, 也就是除了最后一个部分以外的内容
5.path.isAbsolute(path) 判断是否是绝对路径
isAbsolute
用于判断路径是否是一个绝对路径
区分操作系统
- 在 Linux 操作系统中
/
开头就是绝对路径 - 在 Windows 操作系统中
盘符
开头就是绝对路径 - 在 Linux 操作系统中路径的分隔符是 左(正)斜杠
/
- 在 Windows 操作系统中路径的分隔符是 右(反)斜杠
\
7.path.delimiter 获取当前操作系统中环境变量的分隔符
path.delimiter
是 Node.js
中的一个只读属性,非函数
如果是在 Linux 操作系统中运行那么获取到的是 :
;例:/usr/local/bin:/usr/bin:/bin
如果是在 Windows 操作系统中运行那么获取到的是 ;
;例C:\Program Files\Node.js\;C:\Windows\System32
8.path.sep 获取当前操作系统路径的分隔符
path.sep
是 Node.js
中的一个只读属性,非函数
如果是在 Linux 操作系统中运行那么获取到的是 左(正)斜杠 /
如果是在 Windows 操作系统中运行那么获取到的是 右(反)斜杠 \
9.path.parse() 将一个路径字符串解析成一个对象
用于将一个路径字符串解析成一个对象,该对象包含了路径的各个组成部分。
返回对象的属性
root
:根目录。在 Unix/Linux 系统中,通常是/
;在 Windows 系统中,通常是盘符加上根目录的反斜杠,如C:\
。dir
:目录名(不包括文件名)。这是路径中最后一个/
或\
(在 Windows 上)之前的部分。base
:文件名(包含扩展名)。这是路径中最后一个/
或\
(在 Windows 上)之后的部分。ext
:文件的扩展名,包括点(.
)。如果路径中没有扩展名,则为空字符串。name
:文件名(不包含扩展名)。这是base
属性去掉ext
属性后的部分。
const path = require("path");
const parsed1 = path.parse("/home/user/dir/file.txt");
console.log(parsed1);
/* 输出:
{
root: '/',
dir: '/home/user/dir',
base: 'file.txt',
ext: '.txt',
name: 'file'
}
*/
const parsed2 = path.parse("C:\\path\\dir\\index.html");
console.log(parsed2);
/* 输出:
{
root: 'C:\\',
dir: 'C:\\path\\dir',
base: 'index.html',
ext: '.html',
name: 'index'
}
*/
注意事项
path.parse
方法在处理路径时,会忽略尾部的目录分隔符。- 在 Windows 系统上,正斜杠(
/
)和反斜杠(\
)都可以作为路径分隔符,但在返回值中,路径分隔符会被统一为反斜杠(\
)。
10.path.format() 用于将对象转换成路径
用法
const pathString = path.format(pathObject);
pathObject
对象的属性
dir
(可选):目录路径。这是路径中最后一个/
或\
(在 Windows 上)之前的部分。base
(可选):文件名(包含扩展名)。如果同时提供了name
和ext
,则base
会被忽略。name
(可选):文件名(不包含扩展名)。如果同时提供了base
,则name
会被忽略。ext
(可选):文件的扩展名,包括点(.
)。如果同时提供了base
,则ext
会被忽略。root
(可选):根目录。在 Unix/Linux 系统中,通常是/
;在 Windows 系统中,通常是盘符加上根目录的反斜杠,如C:\
。如果提供了dir
,则root
会被忽略,除非dir
是相对于root
的。
const path = require("path");
const myPath = path.format({
dir: "/home/user/docs",
base: "file.txt",
});
console.log(myPath); // 输出: /home/user/docs/file.txt
const myPath2 = path.format({
root: "/",
name: "index",
ext: ".html",
});
console.log(myPath2); // 输出: /index.html
const myPath3 = path.format({
dir: "C:\\Users\\Name\\Documents",
name: "report",
ext: ".pdf",
});
console.log(myPath3); // 输出: C:\Users\Name\Documents\report.pdf
注意事项
- 如果同时提供了
base
和name
/ext
,则base
会覆盖name
和ext
。 - 如果提供了
dir
和root
,且dir
不是相对于root
的绝对路径,则root
可能会被忽略。 - 在 Windows 系统上,路径分隔符会被统一为反斜杠(
\
),但在对象中你可以使用正斜杠(/
)作为分隔符,path.format
方法会自动转换。
11.path.normalize() 规范化路径
用于将路径字符串规范化为标准的格式。这个方法会处理路径中的冗余分隔符、相对路径标识符(如 . 和 ..),以及平台特定的路径分隔符差异。
说明
- 冗余分隔符:连续的多个分隔符会被替换为单个分隔符。例如,
foo//bar
会被规范化为foo/bar
。 - 相对路径标识符:
.
表示当前目录,会被移除。例如,foo/./bar
会被规范化为foo/bar
。..
表示上级目录,会被适当地解析。例如,foo/bar/../baz
会被规范化为foo/baz
。
- 平台特定分隔符:在 Windows 系统上,路径分隔符可能是反斜杠(
\
),而在 Unix/Linux 系统上,路径分隔符是正斜杠(/
)。path.normalize
会根据 Node.js 运行的平台来处理这些差异,但通常会将所有分隔符转换为正斜杠(/
),除非在 Windows 系统上且使用了path.win32.normalize
。
const path = require("path");
const p1 = path.normalize("/foo//bar/baz//qux/");
console.log(p1); // 输出: /foo/bar/baz/qux
const p2 = path.normalize("foo/./bar/../baz");
console.log(p2); // 输出: foo/baz
// 在 Windows 系统上
const p3 = path.win32.normalize("C:\\foo\\bar\\..\\baz\\");
console.log(p3); // 输出: C:\foo\baz (注意这里仍然使用了反斜杠)
// 但如果你想要在所有平台上都使用正斜杠,可以这样做:
const p4 = path.normalize("C:\\foo\\bar\\..\\baz\\").replace(/\\/g, "/");
console.log(p4); // 输出: C:/foo/baz
12.path.relative(from, to) 计算相对路径
用于计算从 from
路径到 to
路径的相对路径。这个方法非常有用,尤其是在你需要生成从一个目录到另一个目录的引用时,而不希望使用绝对路径。
用法
const relativePath = path.relative(from, to);
from
是一个字符串,表示起始路径。to
是一个字符串,表示目标路径。relativePath
是一个字符串,表示从from
到to
的相对路径。
说明
path.relative
会计算从from
到to
的最短路径,并返回一个字符串,该字符串表示这个相对路径。- 如果
from
和to
指向相同的路径或文件,则返回一个空字符串(在某些 Node.js 版本中可能是.
,表示当前目录)。 - 如果
to
路径是from
路径的父级或更上级的路径,则返回的相对路径中可能包含..
(表示上级目录)。
const path = require("path");
const relative1 = path.relative("/data/orandea/test/aaa", "/data/orandea/impl/bbb");
console.log(relative1); // 输出: '../impl/bbb'
const relative2 = path.relative("/data/demo", "/data/demo");
console.log(relative2); // 输出: '' (在某些 Node.js 版本中可能是 '.')
const relative3 = path.relative("/foo/bar", "/foo/bar/baz/qux");
console.log(relative3); // 输出: 'baz/qux'
注意事项
path.relative
生成的路径是基于字符串操作的,它不会检查文件系统上的实际路径是否存在。- 在处理 Windows 路径时,
path.relative
会自动处理平台特定的路径分隔符(如使用反斜杠\
),但返回的相对路径通常使用正斜杠/
作为分隔符,除非你在 Windows 系统上并且明确希望使用path.win32.relative
。 - 如果
from
或to
路径包含符号链接(symlinks),path.relative
不会解析这些符号链接,而是将它们视为普通路径的一部分。
13.path.resolve([…paths]) 解析路径
用于将路径或路径片段的序列解析为绝对路径。这个方法会按照从左到右的顺序处理提供的路径片段,直到构造出一个绝对路径。如果提供的路径片段中有 .
或 ..
这样的相对路径指示符,path.resolve
也会相应地解析它们。
用法
const resolvedPath = path.resolve([...paths]);
说明
- 如果提供的路径片段中的第一个是绝对路径,则
path.resolve
会直接使用这个绝对路径作为基础,并忽略任何之前的路径片段。 - 如果提供的路径片段中没有绝对路径,则
path.resolve
会使用当前工作目录(process.cwd()
返回的路径)作为基础路径。 path.resolve
会处理.
(表示当前目录)和..
(表示上级目录)这样的相对路径指示符。- 最终返回的路径是一个绝对路径,并且所有的路径分隔符都会被标准化为平台特定的分隔符(在 Unix/Linux 上是正斜杠
/
,在 Windows 上通常是反斜杠\
,但 Node.js 的 API 通常返回使用正斜杠的路径)。
const path = require("path");
// 假设当前工作目录是 /home/user
const p1 = path.resolve("./subdir", "file.txt");
console.log(p1); // 输出: /home/user/subdir/file.txt
const p2 = path.resolve("/etc", "config", "file.conf");
console.log(p2); // 输出: /etc/config/file.conf
const p3 = path.resolve("..", "file.txt");
console.log(p3); // 输出: /home/file.txt
// 在 Windows 系统上
const p4 = path.win32.resolve("C:", "Users", "Name", "file.txt");
console.log(p4); // 输出: C:\Users\Name\file.txt (注意这里使用了反斜杠)
注意事项
path.resolve
不会检查文件系统上的实际路径是否存在。它只是基于提供的路径片段和当前工作目录来计算绝对路径。- 在处理 Windows 路径时,如果你希望使用反斜杠作为路径分隔符,并且你的 Node.js 应用在 Windows 系统上运行,你可以使用
path.win32.resolve
而不是path.resolve
。不过,大多数情况下,Node.js 的 API 和工具都能很好地处理使用正斜杠的路径。
注意点: 如果后面的参数是绝对路径, 那么前面的参数就会被忽略