[NodeJS] 디렉토리 안에 디렉토리인 것만 찾기
[NodeJS] 디렉토리 안에 디렉토리인 것만 찾기
fs 모듈에서
디렉토리 안을 읽는 readdirSync 과 디렉토리인지 검사하는 isDirectory 함수를 사용해서 간단하게 만들 수 있다.
먼저, readdirSync 을 보면
옵션으로 withFileTypes가 있고, 기본값은 false이지만, true로 추가해 주면 결과에 fs.Dirent 객체가 포함된다고 한다.
isDirectory 는 stats.isDirectory() 와 dirent.isDirectory() 두 가지가 있다.
1. stats.isDirectory()는 stat 객체가 디렉토리인지 체크하는 함수이며, 아래와 같이 디렉토리를 체크할 수 있다.
fs.lstatSync('파일').isDitectory() fs.lstat('파일').isDitectory()
2. dirent.isDirectory()는 dirent 객체가 디렉토리인지 체크하는 함수이며, 아래와 같이 디렉토리를 체크할 수 있다.
공식홈페이지를 캡쳐한 아래 이미지를 보면 fs.Dirent 클래스는 fs.readdir() 또는 fs.readdirSync()를 부를 때 withFileTypes 옵션을 True로 하면 fs.Dirent 객체가 함께 결과로 표시된다고 나와있다.
즉, 디렉토리 안에 내용들이 파일인지, 디렉토리인지 검사하기 위해서는 readdirSync()또는 readdir() 에 withFilesTypes옵션을 True로 해서 검색 한 결과에 원하는 조건을 추가 하면 된다.
디렉토리인지 체크하기 위해서는 아래와 같이 하면 된다.
const fs = require('fs'); const path = 'C:/'; // 디렉토리 검색 fs.readdirSync(path, {withFileTypes: true}).forEach(p => { const dir = p.name if (p.isDirectory()) { // 디렉토리인지 체크 console.log(`${dir} is Directory!!!`) } });
[참고] https://nodejs.org/api/fs.html#fs_fs_readdirsync_path_options