WEB/Node.js

[NodeJS] 디렉토리 안에 디렉토리인 것만 찾기

S0PH1A 2019. 5. 22. 12:06
반응형

[NodeJS] 디렉토리 안에 디렉토리인 것만 찾기


fs 모듈에서 

디렉토리 안을 읽는 readdirSync 과 디렉토리인지 검사하는 isDirectory 함수를 사용해서 간단하게 만들 수 있다.

 

먼저, readdirSync 을 보면

옵션으로 withFileTypes가 있고, 기본값은 false이지만, true로 추가해 주면 결과에 fs.Dirent 객체가 포함된다고 한다.

nodejs.org

 

isDirectorystats.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

반응형