FS:我如何find父文件夹?

我怎么写这个去备份父级2级来find一个文件?

fs.readFile(__dirname + 'foo.bar'); 

尝试这个:

 fs.readFile(__dirname + '/../../foo.bar'); 

请注意相对path开始处的正斜杠。

使用path.join http://nodejs.org/docs/v0.4.10/api/path.html#path.join

 var path = require("path"), fs = require("fs"); fs.readFile(path.join(__dirname, '../..', 'foo.bar')); 

path.join()将为你处理前/后斜线,只要做正确的事情,你不必记住当斜线存在和何时不存在。

我知道这有点挑剔,但迄今为止所有的答案都不是很正确。

path.join()的目的是消除调用者需要知道使用哪个目录分隔符(使代码平台不可知)。

从技术上讲,正确的答案是这样的:

 var path = require("path"); fs.readFile(path.join(__dirname, '..', '..', 'foo.bar')); 

我会添加这个作为评论亚历克斯·韦恩的答案,但还没有足够的代表呢!

编辑:根据用户1767586的观察

最简单的方法是使用path.resolve

 path.resolve(__dirname, '..', '..'); 

看起来你需要path模块。 (特别是path.normalize

 var path = require("path"), fs = require("fs"); fs.readFile(path.normalize(__dirname + "/../../foo.bar")); 

如果你对父母的位置没有肯定的话,这会让你走上正路。

 var path = require('path'), __parentDir = path.dirname(module.parent.filename); fs.readFile(__parentDir + '/foo.bar'); 

如果另一个模块调用你的,你仍然想知道正在运行的主文件的位置,你可以使用修改@ Jason的代码:

 var path = require('path'), __parentDir = path.dirname(process.mainModule.filename); fs.readFile(__parentDir + '/foo.bar'); 

这样你将得到实际运行的脚本的位置。

您可以使用

 path.join(__dirname, '../..');