path
模块的作用
path
模块是 Node.js 的核心模块之一,提供了用于处理和转换文件路径的功能。它能帮助你在不同操作系统间处理文件路径时避免平台差异(如 Windows 和 Unix 系统使用不同的路径分隔符)
path
模块api介绍
使用场景:
- 跨平台路径处理:
path
模块确保你的代码在不同操作系统中都能正确处理文件路径。 - 文件和目录操作:当你需要动态构建文件路径(例如,处理用户上传的文件或读取特定目录中的文件时),
path
模块提供了简便的工具。 - 路径解析与规范化:使用
path.normalize
和path.resolve
等方法确保文件路径的正确性。
1、path.join([...paths])
- 将所有给定的路径片段连接起来,使用操作系统的路径分隔符(例如,Windows 使用反斜杠
\
,Linux 使用斜杠/
)。 - 会自动处理多余的分隔符和相对路径。
const path = require('path');
const filePath = path.join('folder', 'subfolder', 'file.txt');
console.log(filePath); // 输出:folder/subfolder/file.txt
2、path.resolve([...paths])
- 将给定路径序列解析为绝对路径。如果路径中没有绝对路径(以
/
或C:\
开头),它会从当前工作目录开始解析。 - 该方法会“合并”所有路径片段,直到它找到第一个绝对路径。
const path = require('path');
const absolutePath = path.resolve('folder', 'subfolder', 'file.txt');
console.log(absolutePath); // 输出类似:/Users/user/project/folder/subfolder/file.txt
3、path.normalize(p)
- 规范化路径,消除路径中的多余部分(如
..
和.
)以及多余的分隔符。 - 对于路径中的相对部分(例如
..
表示上级目录,.
表示当前目录),会进行处理和标准化。
const path = require('path');
const normalizedPath = path.normalize('folder//subfolder/../file.txt');
console.log(normalizedPath); // 输出:folder/file.txt
4、path.isAbsolute(p)
- 判断给定的路径是否是绝对路径。
- 如果路径是绝对路径(例如
/Users/user/project
或C:\Users\
),返回true
,否则返回false
。
const path = require('path');
console.log(path.isAbsolute('/Users/user')); // true
console.log(path.isAbsolute('folder/file.txt')); // false
5、path.basename(p, [ext])
- 返回路径的最后一部分,通常是文件名。如果提供了
ext
参数,它会去掉文件名的扩展名部分。
const path = require('path');
console.log(path.basename('/folder/subfolder/file.txt')); // file.txt
console.log(path.basename('/folder/subfolder/file.txt', '.txt')); // file
6、path.dirname(p)
- 返回路径的目录部分,即去掉文件名后剩余的部分。
const path = require('path');
console.log(path.dirname('/folder/subfolder/file.txt')); // /folder/subfolder
7、path.extname(p)
- 返回文件的扩展名(包括点
.
),如果没有扩展名,则返回空字符串。
const path = require('path');
console.log(path.extname('file.txt')); // .txt
console.log(path.extname('file')); // (空字符串)
8、path.parse(p)
- 将路径解析为一个对象,包含如下属性:
root
:路径的根部分dir
:路径的目录部分base
:路径的最后一部分(文件名和扩展名)name
:文件名部分ext
:文件扩展名部分
const path = require('path');
const parsedPath = path.parse('/folder/subfolder/file.txt');
console.log(parsedPath);
// 输出:{
// root: '/',
// dir: '/folder/subfolder',
// base: 'file.txt',
// name: 'file',
// ext: '.txt'
// }
9、path.format(p)
- 根据给定的路径对象,将其格式化为一个路径字符串。
- 输入对象通常是由
path.parse()
返回的解析结果。
const path = require('path');
const pathObj = {root: '/',dir: '/folder/subfolder',base: 'file.txt',name: 'file',ext: '.txt'
};
const formattedPath = path.format(pathObj);
console.log(formattedPath); // /folder/subfolder/file.txt
10、path.relative(from, to)
- 计算从
from
路径到to
路径的相对路径。 - 该方法返回一个相对于
from
的路径字符串。
const path = require('path');
const relativePath = path.relative('/folder/subfolder', '/folder/file.txt');
console.log(relativePath); // ../file.txt
11、path.sep
- 提供操作系统特定的路径分隔符(
/
在 Unix 系统中,\
在 Windows 系统中)。
const path = require('path');
console.log(path.sep); // 在 Unix 上是 '/', 在 Windows 上是 '\'
12、path.delimiter
- 提供操作系统特定的路径分隔符(在
PATH
环境变量中)。对于 Unix 系统,分隔符是:
,而在 Windows 系统中是;
。
const path = require('path');
console.log(path.delimiter); // 在 Unix 上是 ':', 在 Windows 上是 ';'