node.js中的path对象,用于处理目录的对象,提高开发效率。
用node.js的path命令,与使用 Linux 下的shell 脚本命令相似。
首先要引入 path 对象:
var path = require('path');
比较实用的一些方法:
1. 格式化路径
path.normalize(p)
特点:将不符合规范的路径格式化,简化开发人员中处理各种复杂的路径判断
示例:
path.normalize('/foo/bar//baz/asdf/quux/..');
=> '/foo/bar/baz/asdf'
2. 路径合并
path.join( [path1], [path2], [...] );
特点:将所有名称用 path.sep 串联起来,然后用 normalize 格式化
示例:
path.join( '///foo', 'bar', '//baz/asdf', 'quux', '..' );
=> '/foo/bar/baz/asdf'
3. 路径寻航
path.resolve( [form ...], to );
特点:相当于不断的调用系统的 cd 命令
示例:
path.resolve( 'foo/bar', '/tmp/file/', '..', 'a/../subfile' )
// 相当于
cd foo/bar
cd /tmp/file
cd ..
cd a/../subfile
pwd
4. 相对路径
path.relative( from, to )
特点:返回某个路径下相对于另一个路径的相对位置串
相当于:path.resolve( from, path.relative( from, to ) ) == path.resolve(to)
示例:
path.relative( 'C:\\orandea\\test\\aaa', 'C:\\orandea\\impl\\bbb' );
=> '..\\..\impl\\bbb'
path.relative( '/data/orandea/test/aaa', '/data/orandea/impl/bbb' );
=> '../../impl/bbb'
5. 文件夹名称
path.dirname(p)
特点:返回路径的所在的文件夹名称
示例:
path.dirname( '/foo/bar/baz/asdf/quux')
=> '/foo/bar/baz/asdf'
6. 文件名称
path.basename( p, [ext] )
特点:返回指定的文件名,返回结果可排除[ext]后缀字符串
示例:
path.basename( '/foo/bar/baz/asdf/quux.html' );
=> 'quux.html'
path.basename( '/foo/bar/baz/asdf/quux.html', '.html' );
=> 'quux'
7. 扩展名称
path.extname( p )
特点:返回指定文件名的扩展名称
示例:
path.extname( 'index.html' );
=> '.html'
path.extname( 'index.' );
=> '.'
path.extname( 'index' );
=> ''
8. 特定平台的文件分隔符
path.sep
特点:获取文件路径的分隔符,主要是与操作系统相关
示例:
linux:
'foo/bar/baz'.split( path.sep )
=> ['foo', 'bar', 'baz']
window:
'foo\\bar\\baz'.split( path.sep )
=> ['foo', 'bar', 'baz']
9. 特定平台上的路径分隔符
path.delimiter
;
或者:
示例:
linux:
process.env.PATH.split( path.delimiter )
// returns
['/usr/bin', '/bin', 'usr/sbin', '/sbin', '/usr/local/bin' ]
window:
console.log( process.env.PATH )
// 'C:\Windows\system32;C\windows;C:\Program Files\nodejs\'
process.env.PATH.split( path.delimiter )
// returns
['C:\Windows\system32', 'C:\Windows', 'C:\Program Files\nodejs\']