如何编写此代码以备份父级2级别以查找文件?
fs.readFile(__dirname + 'foo.bar');
答案 0 :(得分:223)
试试这个:
fs.readFile(__dirname + '/../../foo.bar');
注意相对路径开头的正斜杠。
答案 1 :(得分:132)
使用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()
将为您处理前导/尾随斜杠,只做正确的事情,您不必尝试记住尾随斜杠何时存在以及何时不存在。
答案 2 :(得分:82)
我知道这有点挑剔,但到目前为止所有答案都不太对。
path.join()的目的是消除调用者需要知道使用哪个目录分隔符(使代码平台不可知)。
从技术上讲,正确的答案是:
var path = require("path");
fs.readFile(path.join(__dirname, '..', '..', 'foo.bar'));
我会将此添加为对Alex Wayne的答案的评论但尚未足够的代表!
编辑:根据用户1767586的观察
答案 3 :(得分:50)
最简单的方法是使用path.resolve
:
path.resolve(__dirname, '..', '..');
答案 4 :(得分:12)
看起来你需要path
模块。 (特别是path.normalize
)
var path = require("path"),
fs = require("fs");
fs.readFile(path.normalize(__dirname + "/../../foo.bar"));
答案 5 :(得分:11)
如果另一个模块调用你的并且你仍然想知道正在运行的主文件的位置,你可以使用@Jason代码的修改:
var path = require('path'),
__parentDir = path.dirname(process.mainModule.filename);
fs.readFile(__parentDir + '/foo.bar');
这样你就可以获得实际运行的脚本的位置。
答案 6 :(得分:7)
如果你对父母的位置不肯定,这将为你提供道路;
var path = require('path'),
__parentDir = path.dirname(module.parent.filename);
fs.readFile(__parentDir + '/foo.bar');
答案 7 :(得分:5)
您可以使用
path.join(__dirname, '../..');
答案 8 :(得分:1)
这也将起作用:
fs.readFile(`${__dirname}/../../foo.bar`);
答案 9 :(得分:1)
我正在运行电子应用程序,我可以通过path.resolve()获取父文件夹
父级1级:path.resolve(__dirname, '..') + '/'
父级2个级别:path.resolve(__dirname, '..', '..') + '/'
答案 10 :(得分:0)
这很好
path.join(__dirname + '/../client/index.html')
const path = require('path')
const fs = require('fs')
fs.readFile(path.join(__dirname + '/../client/index.html'))