初识Nodejs路径模块path

引入模块

NodeJs中的path模块是用于处理文件/目录路径的一个内置模块

const path = require('oath')

__dirname和__filename

  • __dirname可以看作nodejs中的全局变量,他始终表示当前执行文件所在目录的完整路径(绝对路径)
  • __filename可以看作是nodejs中的全局变量,始终表示当前执行文件的完整文件名(绝对路径,包括文件名)
// 当前执行文件的完整路径为\Stone\node\node\path_module\test.js
const path = require("path");

console.log(__dirname); 
// \Stone\node\node\path_module
console.log(__filename); 
// \Stone\node\node\path_module\test.js

然后我们在 \Stone\node\node目录下运行node path_module\test.js,会发现输出结果同上, 所以这就是说明 __dirname 和 __filename 始终跟当前执行文件有关,跟启动脚本所在目录无关。

拼接路径 join

path.join([...paths])

  • paths:路径片段
  • 返回值:将所有路径片段连接在一起后生成的路径

注意:

  • 如果paths不是字符串片段,则抛出TypeError
  • 零长度的path片段会被忽略
  • 如果链接后的路径字符长度为0,则返回'.',表示当前目录
  • './'和'../'在路径中会计算生效
const path = require("path");

path.join('') // '.'
path.join('./') // '.\'
path.join('../') // '..\'
path.join('/foo/','bar','baz','../','index.js') // '\foo\bar\index.js'
path.join('./bar','baz' ,'/','../','',index.js') // 'bar\index.js'
path.join('foo', {}, 'bar'); // 'TypeError: Path must be a string. Received {}'

获取路径基础名 basename

path.basename(path[,ext])

  • path:文件/目录路径
  • ext:可选,文件扩展名(.js .css等)
  • 返回值:path路径的最后一部分

注意

  • 如果path不是字符串或给定的ext参数不是字符串,则抛出TypeError
  • 如果有ext参数,当ext后缀名与文件名匹配上时,返回的文件名会省略文件后缀
  • 如果path尾部有目录分隔符则会被忽略
const path = require("path");

path.basename('./ext/test.js') //test.js
path.basename('./ext/test.js','.js') //test (当后缀名与文件名匹配上时返回的文件名会省略文件后缀)
path.basename('./ext/test.js','.html') //test.js (没有匹配上时返回文件全名)
path.basename('./ext/foo/') // foo (尾部目录分隔符被忽略)

获取路径扩展名 extname

既然有获取路径的基础名,与之对应就同样存在获取路径的扩展名

path.extname(path)

  • path:文件/目录路径
  • 返回值:path路径的扩展名,从最后一次出现'.'字符到path最后一部分的字符串结束,若无扩展名则返回空
const path = require("path");

path.extname('foo/bar/baz/test.js'); // .js
path.extname('foo/bar/baz');// '' (无扩展名返回 '')
path.extname('foo/bar/baz/.'); // ''
path.extname('foo/bar/baz/test.'); // '.'
path.extname('foo/bar/baz/.test'); // ''
path.extname('foo/bar/baz/.test.js'); // '.js'

获取路径目录名 dirname

path.dirname(path)

  • path:文件/目录路径
  • 返回值:path路径的目录名

注意

  • 如果path不是字符串,则抛出TypeError
  • 如果path尾部有目录分隔符’/'则会被忽略
const path = require("path");

path.dirname('./foo/bar/baz'); //./foo/bar (相对路径/绝对路径均可)
path.dirname('/foo/bar/baz/'); // /foo/bar (尾部目录分隔符被忽略)
path.dirname('/foo/bar/baz/test.js'); // /foo/bar/baz

解析路径 parse

path.parse(path)

  • path:文件/目录路径
  • 返回值:带有属性(dir,root,base,name,ext)的对象
  • root:根目录
  • dir:文件所在的文件夹
  • base:完整文件
  • name:文件名
  • ext:文件后缀名

注意

  • 如果path不是字符串,则抛出TypeError
  • 如果尾部有目录分隔符则会被忽略
┌──────────────────┬────────────┐
│          dir     │    base    │
├──────┬           ├──────┬─────┤
│ root │           │ name │ ext │
"  /    foo/bar/baz/ index  .js "
const path = require("path");

path.parse('/foo/bar/baz/index.js')
// {
//     root: '/',
//     dir: '/foo/bar/baz',
//     base: 'index.js',
//     ext: '.js',
//     name: 'index'
//   }

path.parse('/foo/bar/baz') //尾部目录分隔符省略
// {
//     root: '/',
//     dir: '/foo/bar',
//     base: 'baz',
//     ext: '',
//     name: 'baz'
//   }

path.parse('./foo/bar/baz/index.js') //当路径为相对路径 ./ 或../时 解析结果中root(代表根目录,绝对路径才有值)为 ''
// {
//     root: '',
//     dir: './foo/bar/baz',
//     base: 'index.js',
//     ext: '.js',
//     name: 'index'
//   }

参考文档

nodejs — path 模块

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值