HOME

nodejs path 模块速查手册

2018-2-22 nodejs.cn

<!-- TOC -->

<!-- /TOC -->

1. path

1.1. Windows 与 POSIX

一致性:

处理 windows 文件路径:

要想在任何操作系统上处理 Windows 文件路径时获得一致的结果,可以使用 path.win32:

path.win32.basename('C:\\temp\\myfile.html');
// 返回: 'myfile.html'

处理 POSIX 文件路径:

要想在任何操作系统上处理 POSIX 文件路径时获得一致的结果,可以使用 path.posix:

path.posix.basename('/tmp/myfile.html');
// 返回: 'myfile.html'

1.2. path.basename(path[, ext]) 返回一个 path 的最后一部分

path.basename('/foo/bar/baz/asdf/quux.html');
// 返回: 'quux.html'

path.basename('/foo/bar/baz/asdf/quux.html', '.html');
// 返回: 'quux'

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

Windows 上是 ; POSIX 上是 :

例如,在 POSIX 上:

console.log(process.env.PATH);
// 输出: '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin'

process.env.PATH.split(path.delimiter);
// 返回: ['/usr/bin', '/bin', '/usr/sbin', '/sbin', '/usr/local/bin']

在 Windows 上:

console.log(process.env.PATH);
// 输出: 'C:\Windows\system32;C:\Windows;C:\Program Files\node\'

process.env.PATH.split(path.delimiter);
// 返回: ['C:\\Windows\\system32', 'C:\\Windows', 'C:\\Program Files\\node\\']

1.4. path.dirname(path) 返回一个 path 的目录名

path.dirname('/foo/bar/baz/asdf/quux');
// 返回: '/foo/bar/baz/asdf'

1.5. path.extname(path) 返回 path 的扩展名

如果 path 的最后一部分没有 . 或 path 的文件名(见 path.basename())的第一个字符是 .,则返回一个空字符串。

1.6. path.format(pathObject) 从一个对象返回一个路径字符串。 与 path.parse() 相反

pathObject <Object>
dir <string>
root <string>
base <string>
name <string>
ext <string>

1.7. path.parse(path) 返回一个对象,对象的属性表示 path 的元素

例如,在 POSIX 上:

path.parse('/home/user/dir/file.txt');
// 返回:
// { root: '/',
//   dir: '/home/user/dir',
//   base: 'file.txt',
//   ext: '.txt',
//   name: 'file' }

在 Windows 上:

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

1.8. path.isAbsolute(path) 判定 path 是否为一个绝对路径

例如,在 POSIX 上:

path.isAbsolute('/foo/bar'); // true
path.isAbsolute('/baz/..');  // true
path.isAbsolute('qux/');     // false
path.isAbsolute('.');        // false

在 Windows 上:

path.isAbsolute('//server');    // true
path.isAbsolute('\\\\server');  // true
path.isAbsolute('C:/foo/..');   // true
path.isAbsolute('C:\\foo\\..'); // true
path.isAbsolute('bar\\baz');    // false
path.isAbsolute('bar/baz');     // false
path.isAbsolute('.');           // false

1.9. path.join([...paths]) 使用平台特定的分隔符把全部给定的 path 片段连接到一起

path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');
// 返回: '/foo/bar/baz/asdf'

1.10. path.normalize(path) 规范化给定的 path,并解析 '..' 和 '.'

1.11. path.posix 针对 POSIX 的实现

1.12. path.win32 针对 Windows 的实现

1.13. path.relative(from, to) 从 from 到 to 的相对路径

例如,在 POSIX 上:

path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb');
// 返回: '../../impl/bbb'

在 Windows 上:

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

1.14. path.resolve([...paths]) 解析为一个绝对路径

序列是从右往左被处理的,给定的路径片段的序列为:/foo、/bar、baz,则调用 path.resolve('/foo', '/bar', 'baz') 会返回 /bar/baz

如果没有传入 path 片段,则 path.resolve() 会返回当前工作目录的绝对路径

1.15. path.sep 平台特定的路径片段分隔符

Windows 上是 \
POSIX 上是 /
例如,在 POSIX 上:

'foo/bar/baz'.split(path.sep);
// 返回: ['foo', 'bar', 'baz']

在 Windows 上:

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