Path模块提供了一些用于处理文件路径
的小工具,可以通过以下方式引入该模块:
const path = require("path")
console.log(Object.keys(path))
引入后得到一个对象,对象的属性(包含方法)见下图:
我用的系统是windows,这里值记录windows系统的执行结果
方法
path.normalize(path)
规范化路径,并解析 ‘…’ 和 ‘.’ 片段。
console.log(path.normalize('../data//users.json')) // ..\data\users.json
path.parse(pathString)
返回路径字符串的对象。
path.parse() 方法返回一个对象,对象的属性表示 path 的元素。
- root 根目录
- dir 目录名(不包括文件名)
- base 文件名(包含扩展名)
- name 文件名(不包含扩展名)
- ext 扩展名
console.log(path.parse('../data/users.json'))
console.log(path.parse('D:\\app\\node-app\\data\\users.json'))
path.dirname(path)
返回path 的目录名
path.basename(path[, ext])
返回路径中的最后一部分。ext为扩展名,加了后就不返回扩展名
path.extname(path)
返回路径中文件的扩展名。
const path = require('path')
const p = '/data/json/users.json'
console.log('path.parse()返回路径字符串的对象:',path.parse(p))
console.log('path.dirname()返回路径中的目录名:',path.dirname(p))
console.log('path.basename()返回路径中的最后一部分:',path.basename(p))
console.log('path.basename()返回路径中的最后一部分,指定了扩展名:',path.basename(p,'.json'))
console.log('path.extname()返回路径中的文件扩展名:',path.extname(p))
path.format(pathObject)
从对象中返回路径字符串,功能与与 path.parse()相反。
这些属性存在优先级
- 如果提供了dir ,则忽略 root
- 如果 base 存在,则忽略ext 和 name
console.log(path.format({
root:'root',
dir:'/data',
base:'users.json',
name:'users2',
ext:'./json2'
}))
打印出:/data\users.json
path.isAbsolute(path)
判断参数 path 是否是绝对路径。
path.relative(from, to)
用于将绝对路径转为相对路径,返回从 from 到 to 的相对路径(基于当前工作目录)。
path.relative('/data/a','/data') // ..
path.relative('/data/a','/data/a') // 空字符串
path.relative('/data/a','/data/a/b') // b
path.relative('/data/a','/data/b') // ..\b
path.join([…paths])
用于连接路径,并规范化生成的路径。
path.join('a','b','c') // a\b\c
path.join('a','b','../c','users.json') // a\c\users.json
path.resolve([…paths])
将路径或路径片段的序列解析为绝对路径(给定的路径序列从右到左进行处理,每个后续的 path 前置,直到构造出一个绝对路径)
无参数返回当前工作目录
path.resolve() // D:\app\node-app(当前工作目录)
path.resolve('/data/json') // D:\data\json
path.resolve('/data/json','a') // D:\data\json\a
path.resolve('/data/json','../a') // D:\data\a
path.resolve('/data/json','/a','b') // D:\a\b
path.resolve('/data/json','/a','../b') // D:\b
属性
path.sep
返回平台的文件路径分隔符,’\’ 或 ‘/’。
path.delimiter
平台的分隔符, ; or ‘:’.
path.posix
提供上述 path 的方法,不过总是以 posix 兼容的方式交互。
path.win32
path.win32 属性提供了 path 方法针对 Windows 的实现。
注意:在 Windows 上,斜杠字符(/)和反斜杠字符(\)都可作为路径分隔符; 但返回值中只用到反斜杠(\)。