一、简介
Node.js
的path
模块用于处理和操作文件路径,是一个核心模块,无需安装即可使用。下面是对path
模块的常用方法和用法的详细介绍。
-
在
Node.js
中,首先需要通过require
引入path
模块:const path = require('path');
二、常用方法
> path.join([...paths])
-
拼接路径片段,自动添加路径分隔符并规范化路径。
const fullPath = path.join('/users', 'john', 'docs', 'file.txt'); console.log(fullPath); // 输出: '/users/john/docs/file.txt'
-
自动去掉多余的斜杠:
const fixedPath = path.join('/users/', '/john/', '//docs', 'file.txt'); console.log(fixedPath); // 输出: '/users/john/docs/file.txt'
> path.resolve([...paths])
-
根据路径片段解析成绝对路径,从右到左拼接,直到生成一个绝对路径为止。
const absPath = path.resolve('docs', 'file.txt'); console.log(absPath); // 输出: '/当前工作目录/docs/file.txt'
-
如果路径片段中有绝对路径,解析会从绝对路径开始:
const absPath = path.resolve('/users', 'john', 'file.txt'); console.log(absPath); // 输出: '/users/john/file.txt'
> path.basename(path[, ext])
-
返回路径中的文件名部分。
const fileName = path.basename('/users/john/docs/file.txt'); console.log(fileName); // 输出: 'file.txt' // 如果传入扩展名,则会移除扩展名 const fileNameWithoutExt = path.basename('/users/john/docs/file.txt', '.txt'); console.log(fileNameWithoutExt); // 输出: 'file'
> path.dirname(path)
-
返回路径中的目录部分。
const dirName = path.dirname('/users/john/docs/file.txt'); console.log(dirName); // 输出: '/users/john/docs'
> path.extname(path)
-
返回路径中文件的扩展名。
const ext = path.extname('/users/john/docs/file.txt'); console.log(ext); // 输出: '.txt'
> path.parse(path)
-
解析路径为一个对象,包含路径的各个部分。
const parsed = path.parse('/users/john/docs/file.txt'); console.log(parsed); // 输出: // { // root: '/', // dir: '/users/john/docs', // base: 'file.txt', // ext: '.txt', // name: 'file' // }
> path.format(pathObject)
-
将
path.parse
返回的对象格式化为路径字符串。const formattedPath = path.format({ root: '/', dir: '/users/john/docs', base: 'file.txt' }); console.log(formattedPath); // 输出: '/users/john/docs/file.txt'
> path.isAbsolute(path)
-
判断路径是否为绝对路径。
console.log(path.isAbsolute('/users/john')); // 输出: true console.log(path.isAbsolute('users/john')); // 输出: false
> path.relative(from, to)
-
返回从
from
到to
的相对路径。const relPath = path.relative('/users/john/docs', '/users/john/images'); console.log(relPath); // 输出: '../images'
> path.normalize(path)
-
规范化路径,自动处理
..
和.
。const normalizedPath = path.normalize('/users/john/../john/docs/./file.txt'); console.log(normalizedPath); // 输出: '/users/john/docs/file.txt'
> path.sep
-
返回系统特定的路径分隔符(
Windows
为\
,POSIX
为/
)。console.log(path.sep); // 输出: '/' 或 '\'
> path.delimiter
-
返回环境变量路径分隔符(
Windows
为;
,POSIX 为:
)。console.log(path.delimiter); // 输出: ':' 或 ';'
三、常见用例
> 获取项目的根目录路径
const rootDir = path.resolve(__dirname, '..');
console.log(rootDir); // 当前文件所在目录的上一级
> 拼接路径
const filePath = path.join(__dirname, 'data', 'file.json');
console.log(filePath);
// 输出: '/当前目录/data/file.json'
> 解析文件路径
const fileInfo = path.parse('/users/john/docs/file.txt');
console.log(`目录: ${fileInfo.dir}`);
console.log(`文件名: ${fileInfo.name}`);
console.log(`扩展名: ${fileInfo.ext}`);
> 动态生成文件路径
const logFilePath = path.format({
dir: path.join(__dirname, 'logs'),
name: 'error',
ext: '.log'
});
console.log(logFilePath); // 输出: '/当前目录/logs/error.log'
> 获取相对路径
const relPath = path.relative('/users/john/docs', '/users/john/images');
console.log(relPath); // 输出: '../images'