[一个人的优点随时有可能变成ta的弱点----万箭穿心]
nodejs的path模块是一个非常基础的模块,里面包含了一些关于路径的基本功能。虽然功能实现很简单,但用处很大,下面重点介绍几个比较常用的功能并附上实例。
1.path.normalize
用于规范得到的路径,需要注意的是三种情况:
# 第一种情况为路径不规范,见path1,结果为a/b/c
# 第二种情况为路径中含.. 被理解为后退,见path2,结果为a/b
# 第三种情况为路径中包含. 会被直接忽略,见path3,结果为a/b/c
# 其余情况将不会做修改,如path4,结果为a/b/c/...
Path = require 'path'
path1 = 'a/b//c'
path2 = 'a/b/c/..'
path3 = 'a/b/c/.'
path4 = 'a/b/c/...'
console.log Path.normalize path1
console.log Path.normalize path2
console.log Path.normalize path3
console.log Path.normalize path4
这是一个非常常用的功能,参数必须为字符串,否则会报错或者忽略(根据版本不同会有不同处理)。
3.path.dirname
传入参数为路径,返回值为文件夹路径,比如path.dirname(),返回的是'.';path.dirname('a/b/c.txt'),返回的是'a/b'
4.path.basename
与dirname功能相反,返回的是文件名称。输入参数为path和忽略的后缀(可选)。比如path.basename('a/b/c.txt'),返回的是c.txt;path.basename('a/b/c.txt', '.txt'),返回的是c
5.path.extname
返回路径中文件的扩展名,如果没有则返回空字符串''。下例为使用extname实现filter ls的功能。
# 第一个传入参数为路径,第二个参数为需要过滤出的文件的后缀
# 可以实现某路径下某后缀文件的打印
fs = require 'fs'
path = require 'path'
filter = process.argv[3]
fs.readdir process.argv[2], (_err, _list)->
for _arr in _list
console.log _arr if path.extname(_arr) is '.' + filter
PS: 0.8版本中的path.exists在1.0版本中变为fs.exists