fs:如何找到父文件夹?

fan*_*ncy 172 javascript filesystems node.js

如何写这个以备份父级2级来查找文件?

fs.readFile(__dirname + 'foo.bar');
Run Code Online (Sandbox Code Playgroud)

And*_*are 244

试试这个:

fs.readFile(__dirname + '/../../foo.bar');
Run Code Online (Sandbox Code Playgroud)

请注意相对路径开头的正斜杠.

  • 我一直试着没有运气,但我只是做了`fs.readFile(__ dirname +'/../../ foo.bar');`而且它有效. (24认同)
  • 我假设那样`__dirname`就像''/ foo/bar'`而不是''/ foo/bar /'`. (6认同)
  • 路径中的第一个“ /”:“/../../foo.bar”至关重要。我遇到了导致问题的“ ../../foo.bar”。 (2认同)

Ale*_*yne 142

使用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'));
Run Code Online (Sandbox Code Playgroud)

path.join() 将为您处理前导/尾随斜杠,并做正确的事情,您不必尝试记住何时存在拖尾斜杠以及何时不存在.

  • 这个带有`path.join`的答案是正确的方法,不应遵循已接受的答案,它甚至会在`airbnb-base preset`上触发`eslint`,规则[no-path-concat](https://eslint .org/docs/rules/no-path-concat) 特别是 (5认同)
  • 您可以更进一步,并执行“ path.join(__ dirname,'..','..','foo.bar')`` (4认同)

smr*_*mde 87

我知道它有点挑剔,但到目前为止所有答案都不太对.

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

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

var path = require("path");

fs.readFile(path.join(__dirname, '..', '..', 'foo.bar'));
Run Code Online (Sandbox Code Playgroud)

我会将此添加为对Alex Wayne的答案的评论但尚未足够的代表!

编辑:根据用户1767586的观察

  • 'foo.bar'应该是'foo.bar'.我尝试进行编辑,但编辑最少需要6个字符(如果你问我愚蠢的规则,阻止我们编辑像这样的小错别字). (3认同)

Yan*_*oto 52

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

path.resolve(__dirname, '..', '..');
Run Code Online (Sandbox Code Playgroud)


Dom*_*nes 12

看起来你需要这个path模块.(path.normalize特别是)

var path = require("path"),
    fs = require("fs");

fs.readFile(path.normalize(__dirname + "/../../foo.bar"));
Run Code Online (Sandbox Code Playgroud)


Jer*_*tle 11

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

var path = require('path'),
    __parentDir = path.dirname(process.mainModule.filename);

fs.readFile(__parentDir + '/foo.bar');
Run Code Online (Sandbox Code Playgroud)

这样你就可以获得实际运行的脚本的位置.


Jas*_*ell 7

如果你不肯定父母在哪里,这将为你提供道路;

var path = require('path'),
    __parentDir = path.dirname(module.parent.filename);

fs.readFile(__parentDir + '/foo.bar');
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以使用

path.join(__dirname, '../..');
Run Code Online (Sandbox Code Playgroud)