Node.js Path 模块
Node.js path 模块提供了一些用于处理文件路径的小工具。
path 模块是 Node.js 的核心模块之一,用于处理和操作文件和目录路径,提供跨平台的路径操作方法。
通过 path 模块,可以拼接、解析、格式化和规范化路径,避免因为操作系统的不同路径格式而导致的错误(如 Windows 使用反斜杠 \,而 Linux 和 macOS 使用正斜杠 /)。
我们可以通过以下方式引入该模块:
var path = require("path")
方法与属性
path 模块的方法与属性如下表:
方法 | 描述 | 示例 |
---|---|---|
path.basename(path[, ext]) | 返回路径中的最后一部分(文件名)。可选参数 ext 用于去除文件扩展名。 | path.basename('/foo/bar/baz.txt'); // 输出: 'baz.txt' |
path.dirname(path) | 返回路径中的目录部分。 | path.dirname('/foo/bar/baz.txt'); // 输出: '/foo/bar' |
path.extname(path) | 返回路径中文件的扩展名。 | path.extname('/foo/bar/baz.txt'); // 输出: '.txt' |
path.join([...paths]) | 将多个路径拼接为一个路径,自动处理路径分隔符。 | path.join('/foo', 'bar', 'baz/asdf', 'quux', '..'); // 输出: '/foo/bar/baz/asdf' |
path.resolve([...paths]) | 将路径序列解析为绝对路径,从右到左依次处理每个路径片段,直到构建出一个绝对路径为止。 | path.resolve('/foo/bar', './baz'); // 输出: '/foo/bar/baz' |
path.normalize(path) | 规范化路径,删除冗余的 . 和 .. ,并根据当前操作系统替换路径分隔符。 | path.normalize('/foo/bar//baz/asdf/quux/..'); // 输出: '/foo/bar/baz/asdf' |
path.isAbsolute(path) | 检查路径是否为绝对路径。 | path.isAbsolute('/foo/bar'); // 输出: true |
path.relative(from, to) | 返回从 from 路径到 to 路径的相对路径。 | path.relative('/foo/bar/baz', '/foo/bar/qux'); // 输出: '../qux' |
path.parse(path) | 将路径字符串解析为对象,包含 root 、dir 、base 、ext 和 name 属性。 | path.parse('/home/user/dir/file.txt'); 输出:{ root: '/', dir: '/home/user/dir', base: 'file.txt', ...} |
path.format(pathObject) | 将路径对象格式化为路径字符串,与 path.parse 相反。 | path.format({ root: '/', dir: '/home/user/dir', base: 'file.txt' }); // 输出: '/home/user/dir/file.txt' |
path.sep | 提供当前操作系统的路径分隔符(POSIX 为 '/' ,Windows 为 '\' )。 | console.log(path.sep); // 输出: '\' (Windows) 或 '/' (POSIX) |
path.delimiter | 提供路径分隔符(环境变量中路径的分隔符),POSIX 为 : ,Windows 为 ; 。 | console.log(path.delimiter); // 输出: ';' (Windows) 或 ':' (POSIX) |
实例
创建 main.js 文件,代码如下所示:
实例
const path = require('path');
// 获取文件名
console.log('文件名:', path.basename('/foo/bar/baz.txt')); // 输出: 'baz.txt'
// 获取目录名
console.log('目录名:', path.dirname('/foo/bar/baz.txt')); // 输出: '/foo/bar'
// 获取扩展名
console.log('扩展名:', path.extname('/foo/bar/baz.txt')); // 输出: '.txt'
// 拼接路径
console.log('拼接路径:', path.join('/foo', 'bar', 'baz/asdf', 'quux', '..')); // 输出: '/foo/bar/baz/asdf'
// 解析绝对路径
console.log('绝对路径:', path.resolve('/foo/bar', './baz')); // 输出: '/foo/bar/baz'
// 规范化路径
console.log('规范化路径:', path.normalize('/foo/bar//baz/asdf/quux/..')); // 输出: '/foo/bar/baz/asdf'
// 判断是否为绝对路径
console.log('是否为绝对路径:', path.isAbsolute('/foo/bar')); // 输出: true
// 相对路径
console.log('相对路径:', path.relative('/foo/bar/baz', '/foo/bar/qux')); // 输出: '../qux'
// 解析路径为对象
const parsedPath = path.parse('/home/user/dir/file.txt');
console.log('解析路径为对象:', parsedPath);
// 输出: { root: '/', dir: '/home/user/dir', base: 'file.txt', ext: '.txt', name: 'file' }
// 将对象格式化为路径
const formattedPath = path.format(parsedPath);
console.log('格式化路径:', formattedPath); // 输出: '/home/user/dir/file.txt'
// 获取文件名
console.log('文件名:', path.basename('/foo/bar/baz.txt')); // 输出: 'baz.txt'
// 获取目录名
console.log('目录名:', path.dirname('/foo/bar/baz.txt')); // 输出: '/foo/bar'
// 获取扩展名
console.log('扩展名:', path.extname('/foo/bar/baz.txt')); // 输出: '.txt'
// 拼接路径
console.log('拼接路径:', path.join('/foo', 'bar', 'baz/asdf', 'quux', '..')); // 输出: '/foo/bar/baz/asdf'
// 解析绝对路径
console.log('绝对路径:', path.resolve('/foo/bar', './baz')); // 输出: '/foo/bar/baz'
// 规范化路径
console.log('规范化路径:', path.normalize('/foo/bar//baz/asdf/quux/..')); // 输出: '/foo/bar/baz/asdf'
// 判断是否为绝对路径
console.log('是否为绝对路径:', path.isAbsolute('/foo/bar')); // 输出: true
// 相对路径
console.log('相对路径:', path.relative('/foo/bar/baz', '/foo/bar/qux')); // 输出: '../qux'
// 解析路径为对象
const parsedPath = path.parse('/home/user/dir/file.txt');
console.log('解析路径为对象:', parsedPath);
// 输出: { root: '/', dir: '/home/user/dir', base: 'file.txt', ext: '.txt', name: 'file' }
// 将对象格式化为路径
const formattedPath = path.format(parsedPath);
console.log('格式化路径:', formattedPath); // 输出: '/home/user/dir/file.txt'