path
来源:Node.js
path模块在不同的操作系统中具有差异
posix
全名Portable Operating System Interface of UNIX
posix表示可移植操作系统接口,它定义了一套标准,遵守这套标准的操作系统有Unix、like Unix、Linux、MacOS、Windows WSL
在Linux系统启动一个进程需要调用fork函数、在Windows启动一个进程需要调用creatprocess函数,这样就会产生问题:在Linux写好的代码需要移植到Windows,结果发现函数不统一,posix标准就是为了解决这个问题
Windows并没有完全遵循posix标准,它在设计上采用了不同于posix的路径表示方法
在Windows 系统中,使用反斜杠\
作路径分隔符,这与 POSIX 系统使用的正斜杠/
是不同的;这是Windows系统的历史原因,早期的Windows操作系统采用了不同的设计选择
path
path.basename
path.basename()
方法返回给定路径中的最后一部分,也就是文件名
在遵循posix的OS中处理Windows路径:
1 | path.basename('C:\temp\myfile.html') |
这个结果并不对,应该返回myfile.html
如果要在遵循posix的OS中正确处理Windows路径,需要调用对应操作系统的方法,所以应该修改为:
1 | path.win32.basename('C:\temp\myfile.html') |
path.dirname
path.dirname()
方法和basename正好互补,返回不包含文件名的目录名
1 | path.dirname('/aaaa/bbbb/cccc/index.html') |
path.extname
path.extname()
方法返回扩展名,没有扩展名就返回空
1 | path.extname('/aaaa/bbbb/cccc/index.html.ccc.ddd.aaa') |
path.join
path.join()
方法用于拼接路径,也支持..
、'./'
和../
操作符
1 | path.join('/foo','/cxk','/ikun','../') |
path.resolve
path.resolve()
解析相对路径并返回绝对路径
1 | // 如果传入了多个绝对路径,返回最右边的绝对路径 |
path.parse
path.parse()
解析文件路径,接收一个路径字符串参数、返回一个包含路径各个组成成分的对象
1 | path.parse('/home/user/dir/file.txt') |
- root:路径的根目录
- dir:文件所在的目录
- base:文件名
- ext:文件扩展名
- name:文件名去除扩展名
path.format
path.format()
和path.parse()
正好相反,它将对象转回路径字符串
1 | path.format({ |