Node.js文件操作详解_node.js(2)
如果解析结果不是绝对路径,path.resolve()会把当前工作目录作为路径附加到解析结果前面,比如:
path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');
// 如果当前工作目录是/home/myself/node, 将返回
// => /home/myself/node/wwwroot/static_files/gif/image.gif'
计算两个绝对路径的相对路径
path.relative()可以告诉你如果从一个绝对地址跳转到另外一个绝对地址,比如:
var path = require('path');
path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb');
// => ../../impl/bbb
从路径提取数据
以路径“/foo/bar/myfile.txt”为例,如果你想获取父目录(/foo/bar)的所有内容,或者读取同级目录的其它文件,为此,你必须用path.dirname(filePath)获得文件路径的目录部分,比如:
var path = require('path');
path.dirname('/foo/bar/baz/asdf/quux.txt');
// => /foo/bar/baz/asdf
或者,你想从文件路径里得到文件名,也就是文件路径的最后那一部分,可以使用path.basename函数:
var path = require('path');
path.basename('/foo/bar/baz/asdf/quux.html')
// => quux.html
文件路径里可能还包含文件扩展名,通常是文件名中最后一个“.”字符之后的那部分字符串。
path.basename还可以接受一个扩展名字符串作为第二个参数,这样返回的文件名就会自动去掉扩展名,仅仅返回文件的名称部分:
var path = require('path');
path.basename('/foo/bar/baz/asdf/quux.html', '.html');
// => quux
要想这么做你首先还得知道文件的扩展名,可以用path.extname()来获取扩展名:
var path = require('path');
path.extname('/a/b/index.html');
// => '.html'
path.extname('/a/b.c/index');
// => ''
path.extname('/a/b.c/.');
// => ''
path.extname('/a/b.c/d.');
// => '.'
检查路径是否存在