Node JS에서 디렉터리나 파일 관련 작업을 진행하기 위해서는 거의 대부분 path 모듈이 필수적으로 사용된다.
노드 기본 조작으로 현재 위치정보에 대해 표시를 할 수 있지만 윈도우OS 와 유닉스기반 OS의 디렉터리 표시 타입부터가
차이가 난다.
윈도우 : C:\Users\MyCom\test.js
유닉스기반 : /home/mycom/test.js
윈도우의 경우는 \
유닉스기반의 경우는 / 를 사용하기 때문에 매번 개발자가 고생을 해가며 OS별 경로 관련 기능을 구현하는데 애를 먹어야 한다.
path 모듈은 이러한 고증을 쉽게 해결해 줄 뿐 아니라 다양하고 편리한 기능들을 제공하고 있다.
path.sep : 현재 OS가 경로를 표시하는 데 사용하는 구분자 (윈도우는 \, 유닉스는 / 가 될 것이다.)
ex) console.log(path.sep) ;
result) \
path.dirname(경로) : 파일의 경로에 위치한 폴더 경로를 표시
ex) console.log(path.dirname(filename));
result) c:\Uses\MyCom
path.extname(경로) : 해당 파일의 확장자를 표시
ex) console.log(extname(filename));
result) .js
path.basename(경로, 확장명) : 파일의 이름을 표시한다. 만약 파일의 이름만 표시하고 싶다면 두 번째 인수로 파일의 확장자를 넣는다.
ex) console.log(basename(filename, path.extname(filename));
result) test
path.delimiter : 환경변수의 구분자로 process.env.PATH를 입력할 때 나오는 경로의 구분자다 (윈도우는 ; 유닉스는 , 이다)
ex) console.log(path.delimiter(filename));
result) ;
path.parse(경로) : 파일 경로를 root, dir, base, ext, name 으로 분리한다.
ex) console.log(path.parse(filename));
result)
{
root: 'C:\\',
dir: 'C:\\Users\\MyCom',
base: 'test.js',
ext: '.js',
name: 'path'
}
path.format(객체) : path.parse()로 나온 객체를 파일 경로로 합친다.
ex) console.log(path.format({
dir: 'C:\\Users\\MyCom',
name: 'test',
ext: '.js'
}));
result) C:\Users\MyCom\test.js
path.normalize(오타 경로) : \ 또는 /를 실수로 여러 번 사용했거나 혼용했을 때 정상적인 경로로 변환해 준다.
ex) console.log(path.normalize('C://Users\\\\MyCom\\\test.js');
result) C:\Users\MyCom\test.js
path.isAbsolute(경로) : 파일의 경로가 절대경로인지 상대경로인지에 대한 여부를 true 또는 false 형식으로 반환한다.
ex) console.log(path.isAbsolute('C:\\'));
result) true
path.relative(기준경로, 비교경로) : 기준 경로로부터 비교 경로로 가는 방법에 대해 알려준다.
ex) console.log(path.relative('C:\\Users\\MyCom\\test.js', 'C:\\'));
result) ..\..\..\
path.join(경로, ...) : 여러 인수를 넣어 하나의 경로로 합친다. 상대경로인 ...(부모 디렉토리)와 .(현 위치) 도 알아서 처리한다.
ex) console.log(path.join(filename, '..', '..', '/Users', '.', '/MyCom'));
result) C:\Users\MyCom
path.resove(경로, ...) : path.join()과 비슷하지만 차이가 있다. 우선 동작방식이 다른데, /를 만나면 path.resolve는 결대 경로로 인식하게 되어 앞의 경로를 무시하고 path.join은 상대경로로 처리하여 앞의 경로를 포함한다.
ex)
path.join('/a', '/b', 'c');
result) /a/b/c
path.resolve('/a' '/b', 'c');
result) /b/c
추가)
\ 와 \\ 의 차이 : 자바스크립트 구문에서는 문자열에서 \가 특수 문자로 인식이 된다 예를 들어줄 바꿈을 사용할 땐 \n 을 쓰게 되는데 이는 의도치 않는 오류를 낳기 때문에 문자열에서 경로를 표시할 땐 'C:\\node\\MyCom' 형식으로 사용해야 한다.
상대경로와 절대경로의 차이 : 절대경로는 루트디렉터리를 기준으로 표시하도록 한다.
그리고 상대경로는 현재 파일을 기준으로 표시하도록 한다. 따라서 현재파일과 같은 경로면 점 하나 (.)을, 현재 파일보다 한 단계 상위 경로면 점 두 개(..)를 사용해야 한다.
만약 현재 실행 중인 파일인 C:\Users\MyCom\test.js 에서 C:\ 로 가고 싶다면 절대경로의 경우 그냥 C:\ 를 입력하면 되지만
상대경로에서는 ..\.. 을 입력해야 두 디렉터리 위로 올라가게 되어 C:\에 도달할 수 있게 된다.
'⚙️ Node.js' 카테고리의 다른 글
[Javascript 심화] 객체와 참조 (2) | 2024.01.27 |
---|---|
[NodeJS] Gmail SMTP로 인증메일 전송하기 (0) | 2023.11.08 |
[Node.js] Callback 패턴을 async/await 패턴으로 바꾸기 (0) | 2023.02.17 |
[Node.js] MySql 시간 출력 시 Z가 붙는 문제 (0) | 2022.09.02 |
[Node.js] crypto 암호화 구현 시 Invalid key length 오류 (0) | 2022.08.17 |