Node.js 提供了一些处理 文件/文件夹 路径的公用方法,可以这样引入:

varpath=require('path');


path.basename(path[, ext]) ---> 返回值:String

path.basename() 方法返回路径的最后一部分,与 Unix 的 basename 命令相似


参数:

path:String

ext:String,可选的文件拓展名,如果提供了ext 参数,则返回值中不包括拓展名


当 path不是一个字符串或者提供了ext 但不是字符串时,会报错TypeError

path.basename('/foo/bar/baz/asdf/quux.html')//Returns:'quux.html'path.basename('/foo/bar/baz/asdf/quux.html','.html')//Returns:'quux'



path.dirname(path) ---> 返回值:String

path.dirname()方法返回的是路径的目录名,与 Unix 中的 dirname 相似


参数:

path:String

如果 path不是字符串,将会抛出 TypeError错误

path.dirname('/foo/bar/baz/asdf/quux')//Returns:'/foo/bar/baz/asdf'



path.extname(path) ---> 返回值:String

path.extname()方法返回的是路径的拓展名,从路径中的最后一个“.”到最后一个字符,如果最后一部分没有“.”,或者路径中 basename的第一个字符是“.”,那么,将返回一个空字符串


参数:

path:String

如果path不是字符串,将会抛出TypeError错误

例如:

path.extname('index.html')//Returns:'.html'path.extname('index.coffee.md')//Returns:'.md'path.extname('index.')//Returns:'.'path.extname('index')//Returns:''path.extname('.index')//Returns:''



path.format(pathObject)---> 返回值:String

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


参数:

pathObject :Object

dir:String

root:String

base:String

name:String

ext:String


例如:

path.format({root:"C:\\",dir:"C:\\path\\dir",base:"file.txt",ext:".txt",name:"file"});//Returns:'C:\\path\\dir\\file.txt'



path.isAbsolute(path) ---> 返回值:Boolean

path.isAbsolute()方法用来判断 path是不是绝对路径


参数:

path:String

如果给出的 path是一个 0 长度的字符串,将返回 false;如果 path不是一个字符串,将会抛出TypeError错误


例如:Windows 系统

path.isAbsolute('//server')//truepath.isAbsolute('\\\\server')//truepath.isAbsolute('C:/foo/..')//truepath.isAbsolute('C:\\foo\\..')//truepath.isAbsolute('bar\\baz')//falsepath.isAbsolute('bar/baz')//falsepath.isAbsolute('.')//false



path.join([...paths]) ---> 返回值:String

path.join()方法将path片段按照操作系统系统特定的分隔符连接在一起,然后将路径结果规范化。

0 长度 path的片段将被忽略,如果连接的路径是 0 长度的字符串,将返回一个“.”来代表当前的工作目录


如果任意一个 path片段不是字符串,将会抛出TypeError错误


例如:

path.join('/foo','bar','baz/asdf','quux','..')//Returns:'/foo/bar/baz/asdf'path.join('foo',{},'bar')//throwsTypeError:Argumentstopath.joinmustbestrings



path.normalize(path) ---> 返回值:String

path.normalize()方法用于把 path规范化,解析出 '..'和 '.'片段


当发现多个连续地单独路径字符片段(例如:Unix 系统中的 /和 Windows 系统中的 \),它们将被各自操作系统的 单个 分隔符替代


参数:

path:String

如果 path 是一个 0 长度的字符串,将返回一个“.”来代表当前的工作目录;如果path不是一个字符串,将会抛出TypeError错误


例如:Unix 系统

path.normalize('/foo/bar//baz/asdf/quux/..')//Returns:'/foo/bar/baz/asdf'


Windows 系统

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



path.parse(path) ---> 返回值:Object

path.parse() 方法返回路径字符串的对象


返回的对象将包含以下属性:

dir:String

root:String

base:String

name:String

ext:String


参数:

path:String

如果path不是字符串,将会抛出TypeError错误


例如:Windows 系统

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



path.relative(from, to) ---> 返回值:String

path.relative()方法返回从 from到 to之间的相对路径,如果二者是相同的路径,则返回一个 0 长度的字符串


from当前路径,并且方法返回值是基于 from 指定到 to 的相对路径

to到哪个路径


from和to任意一个不是字符串的话,将会抛出TypeError错误


例如:Windows 系统

path.relative('C:\\orandea\\test\\aaa','C:\\orandea\\impl\\bbb')//Returns:'..\\..\\impl\\bbb'



path.resolve([...paths]) ---> 返回值:String

path.resolve()方法将一个路径序列或路径片段解析成 绝对路径


提供的路径片段从右往左处理,后面的路径会优先处理直到构造出一个绝对路径。例如,给出一个路径片段 /foo,/bar,baz ,调用 path.resolve('/foo', '/bar', 'baz') 会返回/bar/baz


如果处理所有的路径片段都不能生成一个绝对路径,那么,表示当前的工作目录已经被使用了


路径的结果都是规范化的而且没有斜杠,除非路径被解析成根目录


0 长度的 path片段将被忽略,如果没有 path片段通过,path.resolve() 将返回当前工作目录的绝对路径


如果任意一个参数不是字符串的话,将会抛出TypeError错误

path.resolve('/foo/bar','./baz')//Returns:'/foo/bar/baz'path.resolve('/foo/bar','/tmp/file/')//Returns:'/tmp/file'path.resolve('wwwroot','static_files/png/','../gif/p_w_picpath.gif')//ifthecurrentworkingdirectoryis/home/myself/node,//thisreturns'/home/myself/node/wwwroot/static_files/gif/p_w_picpath.gif'



path.delimiter ---> 类型:String

path.delimiter提供特定平台的路径分隔符


;---> Windows 系统

:---> Unix 系统


例如:Unix 系统中

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']


Windows 系统中

console.log(process.env.PATH)//Prints:'C:\Windows\system32;C:\Windows;C:\ProgramFiles\node\'process.env.PATH.split(path.delimiter)//Returns:['C:\\Windows\\system32','C:\\Windows','C:\\ProgramFiles\\node\\']




path.sep---> 类型:String

返回操作系统中文件分隔符; window ---> \\, Unix ---> /


例如:Unix 系统

'foo/bar/baz'.split(path.sep)//Returns:['foo','bar','baz']


Windows 系统

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



新建一个JS 文件:

varpath=require("path");//格式化路径console.log('normalization:'+path.normalize('/test/test1//2slashes/1slash/tab/..'));//连接路径console.log('jointpath:'+path.join('/test','test1','2slashes/1slash','tab','..'));//转换为绝对路径console.log('resolve:'+path.resolve('main.js'));//路径中文件的后缀名console.log('extname:'+path.extname('main.js'));


在命令行工具中运行,查看输出结果: