path.basename(path[, ext])
path.basename()
方法会返回 path
的最后一部分(返回文件名称[.ext]),类似于 Unix 的 basename
命令。 尾部的目录分隔符会被忽略,参见 path.sep
。
如果 path
不是字符串、或给定了 ext
但不是字符串,则抛出 TypeError
。
path.basename('/目录1/目录2/文件.html'); // 返回: '文件.html' path.basename('/目录1/目录2/文件.html', '.html'); // 返回: '文件'
path.basename('/目录1/目录2/文件.HTML', '.html');
// 返回: '文件.HTML'
path.dirname(path)
path.dirname()
方法会返回 path
的目录名,类似于 Unix 的 dirname
命令。 尾部的目录分隔符会被忽略,参见 path.sep
。
如果 path
不是字符串,则抛出 TypeError
。
path.dirname('/目录1/目录2/目录3'); // 返回: '/目录1/目录2'
path.extname(path)
返回 path
的扩展名。
如果在 path
的最后一部分中没有 .
,或者如果 path
的基本名称(参见 path.basename()
)除了第一个字符以外没有 .
,则返回空字符串。
如果 path
不是字符串,则抛出 TypeError
。
path.extname('index.html'); // 返回: '.html' path.extname('index.coffee.md'); // 返回: '.md' path.extname('index.'); // 返回: '.' path.extname('index'); // 返回: '' path.extname('.index'); // 返回: '' path.extname('.index.md'); // 返回: '.md'
path.format(pathObject)
path.format()
方法从对象返回路径字符串。 与 path.parse()
相反。
当为 pathObject
提供属性时,注意以下组合,其中一些属性优先于另一些属性:
- 如果提供了
pathObject.dir
,则忽略pathObject.root
。 - 如果
pathObject.base
存在,则忽略pathObject.ext
和pathObject.name
。
`[${dir} or ${root}]${path.sep}[${base} or ${name}.${ext}]`
在POSIX上:
// `root` 会被忽略。 path.format({ root: '/ignored', dir: '/home/user/dir', base: 'file.txt' }); // 返回: '/home/user/dir/file.txt' // `ext` 将被忽略。 path.format({ root: '/', base: 'file.txt', ext: 'ignored' }); // 返回: '/file.txt' // 如果未指定 `base`,则使用 `name` + `ext`。 path.format({ root: '/', name: 'file', ext: '.txt' }); // 返回: '/file.txt'
在 Windows 上:
path.format({ dir: 'C:\path\dir', base: 'file.txt' }); // 返回: 'C:\path\dir\file.txt'
path.parse(path)
path.parse()
方法会返回一个对象,其属性表示 path
的有效元素。 尾部的目录分隔符会被忽略,参见 path.sep
。
返回的对象具有以下属性:
path.isAbsolute(path)
检测
path
是否为绝对路径。
如果给定的 path
是零长度字符串,则返回 false
。
path.relative(from, to)
返回to相对于form的相对路径
path.join([...paths])
path.join()
方法会将所有给定的 path
片段连接到一起(使用平台特定的分隔符作为定界符),然后规范化生成的路径。
长度为零的 path
片段会被忽略。 如果连接后的路径字符串为长度为零的字符串,则返回 '.'
,表示当前工作目录。
path.join('/目录1', '目录2', '目录3/目录4', '目录5', '..'); // 返回: '/目录1/目录2/目录3/目录4' path.join('目录1', {}, '目录2'); // 抛出 'TypeError: Path must be a string. Received {}'