Node.js教程-path模块

path模块是Node.js官方提供的、用来处理文件和目录路径的模块。

path.join 拼接路径

path.join([…paths]) // 返回拼接后路径

参数说明:

  • paths 路径片段
const path = require('path')  

path.join('/a', 'b', 'c', './', 'd')  // /a/b/c/d
path.join('/a', 'b', 'c', '../', 'd')  // /a/b/d
path.join('/a', 'b/c', 'd')  // /a/b/c/d

注意:

  1. 待拼接的路径中存在./,则会被忽略
  2. 待拼接的路径中存在../,则会抵消前面的路径

path.basename 获取文件名称

path.basename(path[, ext]) // 返回文件名称

参数说明:

  • path 路径
  • ext 要删除的文件后缀名
const path = require('path')

path.basename('/a/b/c'))  // C
path.basename('../index.js'))  // index.js
path.basename('../index.js', '.js'))  // index
path.basename('../index.js', '.json'))  // index.js

path.extname 获取文件扩展名

path.extname (path) // 返回文件扩展名称

参数说明:

  • path 路径
const path = require('path')

path.extname('../index.js'))  // .js

path.resolve 路径转化

path.resolve() 用于将相对路径转化为绝对路径

path.resolve([…paths]) // 返回绝对路径

参数说明:

  • paths 路径片段
const path = require('path')

path.resolve('a/b', 'c/d')   // 当前目录/a/b/c/d
path.resolve('a/b', '/c/d')  // 当前目录/c/d
path.resolve('a/b', './c/d')  // 当前目录/a/b/c/d

path.resolve('/a/b', 'c/d')  // /a/b/c/d
path.resolve('/a/b', '/c/d')  // /c/d
path.resolve('/a/b', './c/d')  // /a/b/c/d

path.resolve('/a/b', '../c/d')  // /a/c/d

path.relative 相对路径

path.relative(from, to) // 返回 to 路径相对于 from 路径的相对路径

const path = require('path')

path.relative('./', './')  //返回 空
path.relative('/a/b/c/d', '/a/b/x/y')  // ..\..\x\y
path.relative('/a/b/c', '/x/y/z')  // ..\..\..\x\y\z

path.parse() 解析路径

path.parse(path) // 返回一个包含路径信息的对象

参数说明:

  • path 路径
const path = require('path')

var pathObj = path.parse('../index.js')

// { root: '', dir: '..', base: 'index.js', ext: '.js', name: 'index' }
console.log(pathObj)

path.format 序列化路径

path.format(pathObj) // 返回路径字符串。与path.parse相反

参数说明:

  • pathObj 路径对象。必须为对象,否则抛出异常
const path = require('path')

/** 提供了 dir 和 base ,则会忽略 root */
// /home/user\index.html
path.format({
  root: 'ignored',
  dir: '/home/user',
  base: 'index.html'
}))


/** 1.若没有提供 dir, 则会使用 root;
 *  2.若提供了 base, 则会忽略ext */
// /home/user\index.html
path.format({
  root: '/',
  base: 'index.html',
  ext: 'ignored'
}))

/** 1.若没有提供 base, 则 name + ext 会被使用 */
// /home/user\index.html
path.format({
  root: '/',
  name: 'index',
  ext: '.html'
}))

path.normalize 规范路径

path.normalize用于将路径中的...段解析为正确的形式。

path.normalize(path) // 返回规范后的路径

参数说明:

  • path 路径
const path = require('path')

path.normalize('/a/b/c/.')  // /a/b/c
path.normalize('/a/b/c/..')  // /a/b 
path.normalize('/a/b/./c/')  // /a/b/c
path.normalize('/a/b/../c/')  // /a/c
path.normalize('/a/b//c/')  // /a/b/c
path.normalize('/a/b///c/')  // /a/b/c

path.isAbsolute 是否为绝对路径

path.isAbsolute(path) // 返回一个布尔值

参数说明:

  • path 路径
const path = require('path')

path.isAbsolute("")  // false
path.isAbsolute(".")  // false
path.isAbsolute("/")  // true
path.isAbsolute("./")  // false
path.isAbsolute("../")  // false
path.isAbsolute("abc")  // false
path.isAbsolute("/abc")  // true
path.isAbsolute("./abc")  // false
path.isAbsolute("../abc")  // false

常量值

path.sep 特定平台的路径分隔符。(Windows系统 \;POSIX系统 /)

// Windows平台
'a\\b\\c'.split(path.sep);
// Returns: ['a', 'b', 'c']



// POSIX 平台
'a/b/c'.split(path.sep);
// Returns: ['a', 'b', 'c']

path.delimiter 特定平台的路径定界符。(Windows系统 ;;POSIX系统 :)

// Windows平台
console.log(process.env.PATH);
// Prints: 'C:\Windows\system32;C:\Windows;C:\Program Files\node\'

process.env.PATH.split(path.delimiter);
// Returns ['C:\\Windows\\system32', 'C:\\Windows', 'C:\\Program Files\\node\\'] 



// POSIX 平台
console.log(process.env.PATH);
// Prints: '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin'

process.env.PATH.split(path.delimiter);
// Returns: ['/usr/bin', '/bin', '/usr/sbin', '/sbin', '/usr/local/bin'] 

扩展

__filename

__filename 表示当前执行文件的全路径名

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值