Path
# path (路径)
# path.basename(path[, ext])
path.basename() 方法返回一个 path 的最后一部分,类似于 Unix 中的 basename 命令。 没有尾部文件分隔符,请查阅 path.sep。
path.basename("/foo/bar/baz/asdf/quux.html");
// 返回: 'quux.html'
path.basename("/foo/bar/baz/asdf/quux.html", ".html");
// 返回: 'quux'
如果 path 不是一个字符串或提供了 ext 但不是一个字符串,则抛出 TypeError。
# path.dirname(path)
path.dirname() 方法返回一个 path 的目录名,类似于 Unix 中的 dirname 命令。
path.dirname("/foo/bar/baz/asdf/quux");
// 返回: '/foo/bar/baz/asdf'
# path.extname(path)
path.extname() 方法返回 path 的扩展名,即从 path 的最后一部分中的最后一个 .(句号)字符到字符串结束。 如果 path 的最后一部分没有 . 或 path 的文件名(见 path.basename())的第一个字符是 .,则返回一个空字符串。
path.extname("index.html");
// 返回: '.html'
path.extname("index.coffee.md");
// 返回: '.md'
path.extname("index.");
// 返回: '.'
path.extname("index");
// 返回: ''
path.extname(".index");
// 返回: ''
# path.format(pathObject)
path.format() 方法会从一个对象返回一个路径字符串。 与 path.parse() 相反。
pathObject
<Object>
dir
<string>
root
<string>
base
<string>
name
<string>
ext
<string>
返回:
<string>
# path.isAbsolute(path)
path.isAbsolute() 方法会判定 path 是否为一个绝对路径。
如果给定的 path 是一个长度为零的字符串,则返回 false。
# path.join([...paths])
path.join() 方法使用平台特定的分隔符把全部给定的 path 片段连接到一起,并规范化生成的路径。
长度为零的 path 片段会被忽略。 如果连接后的路径字符串是一个长度为零的字符串,则返回 '.',表示当前工作目录。
path.join("/foo", "bar", "baz/asdf", "quux", "..");
// 返回: '/foo/bar/baz/asdf'
path.join("foo", {}, "bar");
// 抛出 'TypeError: Path must be a string. Received {}'
# path.normalize(path)
path.normalize() 方法会规范化给定的 path,并解析 '..' 和 '.' 片段。
如果 path 是一个长度为零的字符串,则返回 '.',表示当前工作目录。
例如,在 POSIX 上:
path.normalize("/foo/bar//baz/asdf/quux/..");
// 返回: '/foo/bar/baz/asdf'
在 Windows 上:
path.normalize("C:\\temp\\\\foo\\bar\\..\\");
// 返回: 'C:\\temp\\foo\\'
尽管 Windows 会识别多种文件路径分隔符,但是两种分隔符在 Window 上会被()分隔符取代:
path.win32.normalize("C:////temp\\\\/\\/\\/foo/bar");
// Returns: 'C:\\temp\\foo\\bar'
# path.parse(path)
path.parse() 方法返回一个对象,对象的属性表示 path 的元素。 尾部文件分隔符会被忽略,请看 path.sep.
返回的对象有以下属性:
{
dir <string>
root <string>
base <string>
name <string>
ext <string>
}
# path.resolve([...paths])
path.resolve() 方法会把一个路径或路径片段的序列解析为一个绝对路径。
path.resolve("/foo/bar", "./baz");
// 返回: '/foo/bar/baz'
path.resolve("/foo/bar", "/tmp/file/");
// 返回: '/tmp/file'
path.resolve("wwwroot", "static_files/png/", "../gif/image.gif");
// 如果当前工作目录为 /home/myself/node,
// 则返回 '/home/myself/node/wwwroot/static_files/gif/image.gif'
# path.sep
提供了平台特定的路径片段分隔符:
Windows 上是 \
POSIX 上是 /
例如,在 POSIX 上:
"foo/bar/baz".split(path.sep);
// 返回: ['foo', 'bar', 'baz']
在 Windows 上:
"foo\\bar\\baz".split(path.sep);
// 返回: ['foo', 'bar', 'baz']
注意:在 Windows 上,斜杠字符(/)和反斜杠字符(\)都可作为路径分隔符; 但 path 的方法只添加反斜杠(\)。
# path.posix
path.posix 属性提供了 path 方法针对 POSIX 的实现。
path.posix.normalize("C:////temp\\\\/\\/\\/foo/bar");
# path.win32
path.win32 属性提供了 path 方法针对 Windows 的实现。
path.win32.normalize("C:////temp\\\\/\\/\\/foo/bar");
# Windows 与 POSIX
path 模块的默认操作会根据 Node.js 应用程序运行的操作系统的不同而变化。 比如,当运行在 Windows 操作系统上时,path 模块会认为使用的是 Windows 风格的路径。
例如,对 Windows 文件路径 C:\temp\myfile.html 使用 path.basename() 函数,运行在 POSIX 上与运行在 Windows 上会产生不同的结果:
在 POSIX 上:
path.basename("C:\\temp\\myfile.html");
// 返回: 'C:\\temp\\myfile.html'
在 Windows 上:
path.basename("C:\\temp\\myfile.html");
// 返回: 'myfile.html'