NodeJs-path模块-将相对路径转为绝对路径

1
2
var path  = require('path')
var dir    = path.resolve('../oncedir')

测试

1
2
$ node test
C:\\github\\oncedir

Path的其他常用方法:

path.normalize(p)

规范化字符串路径,注意 '..' 和 ‘.’ 部分 多个斜杠会被替换成一个; 路径末尾的斜杠会被保留; Windows 系统上, 会使用反斜杠。

path.join([path1], [path2], […])

连接所有参数, 并且规范化得到的路径. 参数必须是字符串。在 v0.8 版本非字符串参数会被悄悄忽略。 在 v0.10 及以后版本将会抛出一个异常。

path.join(‘foo’, {}, ‘bar’)
// 抛出异常
TypeError: Arguments to path.join must be strings

path.resolve([from …], to)

to 解析为一个绝对路径。 如果to不是一个相对于from 参数的绝对路径,to会被添加到from的右边,直到找出一个绝对路径为止。如果使用from路径且仍没有找到绝对路径时,使用当时路径作为目录。返回的结果已经规范化,得到的路径会去掉结尾的斜杠,除非得到的当前路径为root目录。非字符串参数将被忽略。 另一种思路, 是把它看做一系列 cd 命令.

1
path.resolve('foo/bar', '/tmp/file/', '..', 'a/../subfile')

相当于:

1
2
3
4
5
cd foo/bar
cd /tmp/file/
cd ..
cd a/../subfile
pwd

不同的是,不同的路径不需要存在的,也可能是文件。

1
2
3
path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif')
// 如果当前工作目录为 /home/myself/node,它返回:
'/home/myself/node/wwwroot/static_files/gif/image.gif'

path.isAbsolute(path)

判定path是否为绝对路径。一个绝对路径总是指向一个相同的位置,无论当前工作目录是在哪里。

path.relative(from, to)

Solve从fromto的相对路径。 有时我们有2个绝对路径, 我们需要从中找出相对目录的起源目录。这完全是path.resolve的相反实现,我们可以看看是什么意思:

1
path.resolve(from, path.relative(from, to)) == path.resolve(to)

示例

1
2
3
path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb')
// 返回
'../../impl/bbb'

path.dirname(p)

返回路径中文件夹的名称. 类似于Unix的dirname 命令.

1
2
3
path.dirname('/foo/bar/baz/asdf/quux')
// returns
'/foo/bar/baz/asdf'

path.basename(p, [ext])

返回路径中的最后哦一部分. 类似于Unix 的 basename 命令.

path.basename(‘/foo/bar/baz/asdf/quux.html’, ‘.html’)
// returns
‘quux’

path.extname(p)

返回路径中文件的扩展名, 在从最后一部分中的最后一个’.’到字符串的末尾。 如果在路径的最后一部分没有’.’,或者第一个字符是’.’,就返回一个 空字符串。

path.sep

特定平台的文件分隔工具. '\\' 或者 '/'. *nix 上的例子:

1
2
3
'foo/bar/baz'.split(path.sep)
// returns
\['foo', 'bar', 'baz'\]

Windows 上的例子:

1
2
3
'foo\\\bar\\\baz'.split(path.sep)
// returns
\['foo', 'bar', 'baz'\]

path.delimiter

特定平台的路径分隔符, ; 或者 ':'. *nix 上的例子:

1
2
3
process.env.PATH.split(path.delimiter)
// returns
\['/usr/bin', '/bin', '/usr/sbin', '/sbin', '/usr/local/bin'\]

Windows 上的例子:

1
2
3
4
5
6
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\\'\]
  • 版权声明: 本博客所有文章,未经许可,任何单位及个人不得做营利性使用!转载请标明出处!如有侵权请联系作者。
  • Copyrights © 2015-2020 翟天野

请我喝杯咖啡吧~