NodeJS的PATH模块进阶

附录:常用HTTP响应头和请求头信息对照表

  1. Node简介
  2. 第一个node程序
  3. module(模块系统)
  4. npm包管理器
  5. 模块系统优先级
  6. 认识http内置模块
  7. url内置模块
  8. path内置模块
  9. fs内置模块
  10. http模块服务端进阶
  11. http报文浅析
  12. url模块进阶
  13. path模块进阶
  14. querystring模块进阶
  15. 了解Buffer和Stream
  16. os模块
  17. Buffer模块
  18. Stream模块
  19. http模块客户端
  20. Cookie浅析

PATH模块进阶

Windows 与 POSIX

path 模块的默认操作会根据 Node.js 应用程序运行的操作系统的不同而变化。 比如,当运行在 Windows 操作系统上时,path 模块会认为使用的是 Windows 风格的路径。

例如,对 Windows 文件路径 C:\temp\myfile.html 使用 path.basename() 函数,运行在 POSIX 上与运行在 Windows 上会产生不同的结果:

在 POSIX 上:

path.basename('C:\\temp\\myfile.html');
// 返回: 'C:\\temp\\myfile.html'
 

在 Windows 上:

path.basename('C:\\temp\\myfile.html');
// 返回: 'myfile.html'
 

要想在任何操作系统上处理 Windows 文件路径时获得一致的结果,可以使用 path.win32

在 POSIX 和 Windows 上:

path.win32.basename('C:\\temp\\myfile.html');
// 返回: 'myfile.html'
 

要想在任何操作系统上处理 POSIX 文件路径时获得一致的结果,可以使用 path.posix

在 POSIX 和 Windows 上:

path.posix.basename('/tmp/myfile.html');
// 返回: 'myfile.html'

我们还可以使用 os.platform() 查看我们使用的系统平台,os.platform() 方法返回一个字符串, 指定Node.js编译时的操作系统平台,当前可能的值有:

  • 'aix'
  • 'darwin'
  • 'freebsd'
  • 'linux'
  • 'openbsd'
  • 'sunos'
  • 'win32'

path.parse(path)

path.parse() 方法返回一个对象,对象的属性表示 path 的元素。

返回的对象有以下属性:

  • dir
  • root
  • base
  • name
  • ext

例如,在 POSIX 上:

path.parse('/home/user/dir/file.txt');
// 返回:
// { root: '/',
//   dir: '/home/user/dir',
//   base: 'file.txt',
//   ext: '.txt',
//   name: 'file' }
 

在 Windows 上:

path.parse('C:\\path\\dir\\file.txt');
// 返回:
// { root: 'C:\\',
//   dir: 'C:\\path\\dir',
//   base: 'file.txt',
//   ext: '.txt',
//   name: 'file' }

path.dirname(path)

path.dirname() 方法返回一个 path 的目录名,类似于 Unix 中的 dirname 命令。

path.basename(path[, ext])

path.basename() 方法返回一个 path 的最后一部分。

ext是过滤参数

path.extname(path)

path.extname() 方法返回 path 的扩展名,即从 path 的最后一部分中的最后一个 .(句号)字符到字符串结束。 如果 path 的最后一部分没有 .path 的文件名的第一个字符是 .,则返回一个空字符串。

path.format(pathObject)

path.format() 方法会从一个对象返回一个路径字符串。 与 path.parse() 相反。

path.isAbsolute(path)

path.isAbsolute() 方法会判定 path 是否为一个绝对路径(从根目录开始/或从盘符开始c://)。如果给定的 path 是一个长度为零的字符串,则返回 false

path.join([…paths])内部调用normalize方法

path.join() 方法使用平台特定的分隔符把全部给定的 path 片段连接到一起,并规范化生成的路径。

长度为零的 path 片段会被忽略。 如果连接后的路径字符串是一个长度为零的字符串,则返回 '.',表示当前工作目录。

例子:

path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');
// 返回: '/foo/bar/baz/asdf'
 
path.join('foo', {}, 'bar');
// 抛出 'TypeError: Path must be a string. Received {}'

path.normalize(path)

path.normalize() 方法会规范化给定的 path,并解析 '..''.' 片段。

当发现多个连续的路径分隔符时(如 POSIX 上的 / 与 Windows 上的 \/),它们会被单个的路径分隔符(POSIX 上是 /,Windows 上是 \)替换。 末尾的多个分隔符会被保留。

如果 path 是一个长度为零的字符串,则返回 '.',表示当前工作目录。

例如,在 POSIX 上:

path.normalize('/foo/bar//baz/asdf/quux/..');
// 返回: '/foo/bar/baz/asdf'
 

在 Windows 上:

path.normalize('C:\\temp\\\\foo\\bar\\..\\');
// 返回: 'C:\\temp\\foo\\'

path.relative(from, to)后面相对于前面的路径

path.relative() 方法返回从 fromto 的相对路径(基于当前工作目录)。 如果 fromto 各自解析到同一路径(调用 path.resolve()),则返回一个长度为零的字符串。

如果 fromto 传入了一个长度为零的字符串,则当前工作目录会被用于代替长度为零的字符串。

path.sep属性

提供了平台特定的路径片段分隔符:

  • Windows 上是 \
  • POSIX 上是 /

例如,在 POSIX 上:

'foo/bar/baz'.split(path.sep);
// 返回: ['foo', 'bar', 'baz']
 

在 Windows 上:

'foo\\bar\\baz'.split(path.sep);
// 返回: ['foo', 'bar', 'baz']
 

注意:在 Windows 上,斜杠字符(/)和反斜杠字符(\)都可作为路径分隔符; 但 path 的方法只添加反斜杠(\)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值