IT story

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

hot-time 2020. 5. 27. 07:39
반응형

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

당신이 사용할 수있는

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

이것은 또한 작동합니다 :

fs.readFile(`${__dirname}/../../foo.bar`);

참고 URL : https://stackoverflow.com/questions/7083045/fs-how-do-i-locate-a-parent-folder

반응형