[javascript] fs : 상위 폴더는 어떻게 찾습니까?

파일을 찾기 위해 부모 2 레벨로 돌아가려면 어떻게 작성합니까?

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



답변

이 시도:

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

상대 경로의 시작 부분에 슬래시가 있습니다.


답변

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'));

나는 이것을 Alex Wayne의 답변에 대한 주석으로 추가했지만 충분한 담당자는 아닙니다!

편집 : 사용자에 따라 1767586의 관찰


답변

가장 쉬운 방법은 다음을 사용하는 것입니다 path.resolve.

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


답변

path모듈 이 필요한 것 같습니다 . ( path.normalize특히)

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

fs.readFile(path.normalize(__dirname + "/../../foo.bar"));


답변

다른 모듈이 당신을 호출하고 여전히 실행중인 메인 파일의 위치를 ​​알고 싶다면 @Jason 코드의 수정을 사용할 수 있습니다 :

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

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

그렇게하면 실제로 실행중인 스크립트의 위치를 ​​얻을 수 있습니다.


답변

부모님이 어디에 있는지에 대해 긍정적이지 않다면 경로를 알려줄 것입니다.

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

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