用过python的童鞋一定知道python有一个自带模块os.path,os.path集成了很多关于路径的操作,非常好用。
Node.js的path模块类似于python的os.path,尽管功能没有那么丰富。
来看看path有哪些功能
- 获取文件名
var path = require('path');
var path_str = '/home/lee/works/nodejs/study12/index.html';
console.log('文件名带后缀:'+path.basename(path_str));
console.log('文件名不带后缀:'+path.basename(path_str, '.html'));
- 环境变量分隔符
console.log(path.delimiter); //一般linux是‘:’,windows是‘;’
console.log(process.env.PATH); //打印环境变量path
console.log(process.env.PATH.split(path.delimiter)) //用path.delimiter分割
- 目录分隔符
console.log(path.sep); // ‘/’或‘\\’
console.log(path_str.split(path.sep)); // [ '', 'home', 'lee', 'works', 'nodejs', 'study12', 'index.html' ]
- 获取目录
console.log(path.dirname(path_str)); // /home/lee/works/nodejs/study12
- 获取后缀名
console.log(path.extname(path_str)); //.html
console.log(path.extname('index.html.bak')); //.bak
- 格式化
path_format = path.format({
root : "/",
dir : "/home/user/dir",
base : "file.txt",
ext : ".txt",
name : "file"
});
console.log(path_format); // '/home/user/dir/file.txt'
- 判断是否绝对路径
console.log(path.isAbsolute(path_str)); //true
console.log(path.isAbsolute('/foo/bar')); // true
console.log(path.isAbsolute('/baz/..') ); // true
console.log(path.isAbsolute('qux/')); // false
console.log(path.isAbsolute('.')); // false
- 路径组合
console.log(path.join('/foo', 'bar', 'baz/asdf', 'quux', '..')); // '/foo/bar/baz/asdf'
console.log(path.join('/foo', 'bar', 'baz/asdf', 'quux')); // '/foo/bar/baz/asdf/quux'
- 路径常规化
console.log(path.normalize('/foo/bar//baz/asdf/quux/..')); // '/foo/bar/baz/asdf'
- 路径对象化
var path_parsed = path.parse(path_str);
console.log(path_parsed);
/*
{ root: '/',
dir: '/home/lee/works/nodejs/study12',
base: 'index.html',
ext: '.html',
name: 'index' }
*/
- 相对路径
console.log(path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb'));
// '../../impl/bbb'
- resolve
console.log(path.resolve('foo/bar', '/tmp/file/', '..', 'a/../subfile'));
/*
相当于执行了
cd foo/bar
cd /tmp/file/
cd ..
cd a/../subfile
pwd
最后返回当前路径
*/