nodejs中的path模块


本文作者: jsweibo

本文链接: https://jsweibo.github.io/2019/05/22/nodejs%E4%B8%AD%E7%9A%84path%E6%A8%A1%E5%9D%97/

摘要

本文主要讲述了:

  1. 作用
  2. path.basename(path[, ext])
  3. path.delimiter
  4. path.sep
  5. path.dirname(path)
  6. path.extname(path)
  7. path.format(pathObject)
  8. path.isAbsolute(path)
  9. path.join([…paths])
  10. path.normalize(path)
  11. path.parse(path)
  12. path.relative(from, to)
  13. path.resolve([…paths])

正文

path(路径)是 nodejs 的内建模块。

作用

path 模块被用来处理 nodejs 中的文件、目录的路径。

path.basename(path[, ext])

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

示例:

1
2
3
4
5
6
7
8
const path = require('path');

// 输出:"package.json"
console.log(
path.basename(
'C:\\Users\\whisper\\Documents\\learn\\learn_nodejs\\package.json'
)
);

如果提供了扩展名作为第二个参数,那么会返回文件的基本名称。

示例:

1
2
3
4
5
6
7
8
9
const path = require('path');

// 输出:"package"
console.log(
path.basename(
'C:\\Users\\whisper\\Documents\\learn\\learn_nodejs\\package.json',
'.json'
)
);

path.delimiter

path.delimiter表示路径定界符。

path.delimiter用于分隔多个路径。

path.delimiter的值因系统而异。

  • 在 POSIX 标准下,path.delimiter:。示例:/usr/bin:/bin:/usr/sbin
  • 在 Windows 下,path.delimiter;。示例:C:\\Windows\\system32;C:\\Windows

path.sep

path.sep表示路径片段分隔符。

path.sep用于分隔一个路径内的多个路径片段。

path.sep的值因系统而异。

  • 在 POSIX 标准下,路径片段分隔符为/。示例:/usr/bin
  • 在 Windows 下,路径片段分隔符为\。由于反斜杠需要转义,因此需要写成\\。示例:C:\\Windows\\system32

在 Windows 下,正斜杠/和反斜杠\都被看做路径片段分隔符。但 nodejs 中的path只接受反斜杠\

path.dirname(path)

path.dirname(path)返回路径名称。

示例:

1
2
3
4
5
6
7
8
const path = require('path');

// 输出:"C:\\Users\\whisper\\Documents\\learn\\learn_nodejs"
console.log(
path.dirname(
'C:\\Users\\whisper\\Documents\\learn\\learn_nodejs\\package.json'
)
);

path.extname(path)

path.extname(path)返回文件的扩展名。

示例:

1
2
3
4
const path = require('path');

// 输出:".json"
console.log(path.extname('package.json'));

path.format(pathObject)

path.format(pathObject)返回格式化之后的路径。

path.format(pathObject)path.parse(path)互为逆运算。

示例:

1
2
3
4
5
6
7
8
9
const path = require('path');

// 输出:"C:\\path\\dir\\README.md"
console.log(
path.format({
dir: 'C:\\path\\dir',
base: 'README.md',
})
);

path.isAbsolute(path)

path.isAbsolute(path)判断路径是否是绝对路径。

注:对于系统来说,/是根目录,是绝对路径;对于网站来说,/是相对路径,相对于locaiton.origin,只有以 URL 协议名称打头的才是绝对路径。

示例:

1
2
3
4
5
6
7
const path = require('path');

// 输出:true
console.log(path.isAbsolute('C:\\README.md'));

// 输出:true
console.log(path.isAbsolute('/'));

path.join([…paths])

path.join([...paths])使用路径片段分隔符把所有的路径片段拼接在一起。

示例:

1
2
3
4
const path = require('path');

// 输出:"C:\\path\\to\\dir\\README.md"
console.log(path.join('C:', 'path', 'to', 'dir', 'README.md'));

path.normalize(path)

path.normalize(path)返回标准化之后的路径。

示例:

1
2
3
4
const path = require('path');

// 输出:"C:\\a"
console.log(path.normalize('C:\\a\\b\\..'));

path.parse(path)

path.parse(path)用于路径解析。返回一个路径对象。

path.parse(path)path.format(pathObject)互为逆运算。

示例:

1
2
const path = require('path');
console.log(path.parse('C:\\path\\to\\dir\\README.md'));

以下是返回的路径对象的 JSON 格式:

1
2
3
4
5
6
7
{
"root": "C:\\",
"dir": "C:\\path\\to\\dir",
"base": "README.md",
"ext": ".md",
"name": "README"
}

path.relative(from, to)

path.relative(from, to)用于计算to相对于from的路径。

示例:

1
2
3
4
const path = require('path');

// 输出:"..\\..\\impl\\bbb"
console.log(path.relative('C:\\orandea\\test\\aaa', 'C:\\orandea\\impl\\bbb'));

path.resolve([…paths])

path.resolve([...paths])用于将多个路径片段解析为绝对路径。

path.resolve([...paths])从右到左进行拼接,直到得到一个绝对路径位置返回。如果到返回都没有得到绝对路径,则拼接 CWD 而后返回。

示例:

1
2
3
4
const path = require('path');

// 输出:"D:\\README.md"
console.log(path.resolve('C:', 'D:', 'README.md'));

示例:

1
2
3
4
const path = require('path');

// 若CWD为D:\,则输出:"D:\\README.md"
console.log(path.resolve('README.md'));

参考资料

本文作者: jsweibo

本文链接: https://jsweibo.github.io/2019/05/22/nodejs%E4%B8%AD%E7%9A%84path%E6%A8%A1%E5%9D%97/


本文对你有帮助?请支持我


支付宝
微信