Node.js文件路径操作

__dirnamepath.joinpath.resolve的用法及区别

__dirname

指当前操作的文件夹

如有/dir1/dir2/test.js中写有__dirname,表示/dir1/dir2/

path.join()

path.join()方法进行路径连接

1
2
3
4
5
var path = require('path'); 
//合法的字符串连接
path.join('/foo', 'bar', 'baz/asdf', 'quux', '..')
// 连接后
'/foo/bar/baz/asdf'

path.resolve()

将多个路径解析为一个绝对路径

其处理方式类似于对这些路径逐一进行cd操作。

cd操作不同的是,可以cd进文件,并且可不必实际存在(resolve()方法不会利用底层的文件系统判断路径是否存在,而只是进行路径字符串操作)

1
2
3
4
5
6
7
8
9
10
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/itbilu/node,则输出结果为
'/home/itbilu/node/wwwroot/static_files/gif/image.gif'

对比

1
2
3
4
5
6
7
8
9
10
const path = require('path'); 
let myPath = path.join(__dirname,'/img/so');
let myPath2 = path.join(__dirname,'./img/so');
let myPath3 = path.resolve(__dirname,'/img/so');
let myPath4 = path.resolve(__dirname,'./img/so');
console.log(__dirname); //D:\myProgram\test
console.log(myPath); //D:\myProgram\test\img\so
console.log(myPath2); //D:\myProgram\test\img\so
console.log(myPath3); //D:\img\so<br>
console.log(myPath4); //D:\myProgram\test\img\so