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, '../..');