Multi Developer SuHo

[Node js] fs 모듈로 파일 시스템 처리를 통한 CRUD 제어 본문

Node.js 기록

[Node js] fs 모듈로 파일 시스템 처리를 통한 CRUD 제어

Dreaming Developer Student 2025. 2. 21. 10:18
SMALL

안녕하세요~ 이번에는 Node js에서 fs (File System) 모듈을 제공해주고, fs 모듈로 파일 처리와  대용량 파일을 처리해보도록 하겠습니다.

📑목차
1. fs 모듈
1-1. fs 모듈이란?
1-2. fs 모듈 가져오기
2. fs 모듈을 이용한 CRUD 처리
2-1. 파일, 폴더 존재여부 판단하는 메서드
2-2. fs.exists( )   # 비동기식 호출 

2-3. fs.existsSync( ) #동기식 호출 
2-4. fs.exists  # 비동기식 호출  VS fs.existsSync   #동기식 호출

2-5. fs 모듈을 사용하여 폴더 생성 (Create)
2-6. 폴더 안에 파일 추가 
2-7. 파일 읽어오기 (Read)
2-8. 파일 덮어쓰기 (Update)

2-9. 폴더 삭제 (Delete)


서론 

먼저 본론으로 들어가기전 fs 모듈에 대해 알아볼 필요가 있겠죠? fs 모듈이 무엇인지, fs 모듈을 사용해서 어떠한 동작을 처리할 때 사용되는지 말입니다. fs 모듈을 사용하여 대용량 파일을 처리할 수 있다는 생각해보신적 있으시나요?  궁금증을 풀어보기 위해서는 본론을 보면서 이해하셔야 합니다.

 

본론

1.  fs 모듈 (File System Module)

1-1. fs 모듈이란?

fs(File System Moudle) 로 파일 처리에 대한 내용을 작업하는 모듈입니다.

 

1-2. fs 모듈 가져오기 

// fs 내장 모듈을 가져온다
const fs = require("fs");


2. fs 모듈을 이용한 CRUD 처리

2-1. 파일 및 폴더 존재 여부 판단 메서드


2-2. fs.exists( )  메서드   # 비동기식 호출 

+ 추가 정보

// exists() : 파일이 있는 없는지 판단
// 반환값 : boolean
// 비동기적 호출
// 매개변수로 1.path , 2. 콜백


fs.exists( ) 메서드 사용 코드

fs.exists("./fsTest", (callback) => {
    console.log(callback);
    // console.log("비동기식 호출중..")
})


반환값이 Boolean 타입이기 때문에 true or false를 반환합니다.

실행결과 : false


2-3. fs.existsSync( )  메서드  #동기식 호출 

 

+ 추가 정보

// existsSync () : 파일이 있는지 없는지 판단
// 동기식 호출 
// 매개변수 1.path(경로)
// 반환값 : Boolean

 

fs.existsSync( ) 메서드 사용 코드

const File = fs.existsSync("./fsTest");
console.log(File);
// console.log("동기식 호출중..")

 

fs.existsSync( ) 메서드 또한 반환값이 Boolean 타입이라서 true or false 를 반환합니다.

 

실행 결과 : false 



2-4. fs.exists  # 비동기식 호출  VS fs.existsSync  #동기식 호출 

fs.exists("./fsTest", (callback) => {
    console.log("비동기식 호출중..")
    // console.log(callback);
})

// existsSync () : 파일이 있는지 없는지 판단
// 동기식 호출 
// 매개변수 1.path(경로)
// 반환값 : Boolean
const File = fs.existsSync("./fsTest");
console.log("동기식 호출중..")
// console.log(File);



실행결과 

 

 

2-5. fs 모듈을 사용하여 폴더 생성


fs.mkdir( ) 메서드 사용

 

fs.mkdir(path(경로), option, callback) 

1.첫 번째 매개변수 -  path(경로)

2.두 번째 매개변수 -  option

3.세 번째 매개변수 -  콜백함수( )

 

fs.mkdir( )로 폴더를 생성한 코드 # 비동기식 호출

if(!File){
    fs.mkdir('./test', (err) => {
        if(err){
            console.log(err)
        }
        else {
            console.log("폴더 생성")
        }
    })
}

 

 

 

fs.mkdir( )로 폴더를 생성한 코드 # 비동기식 호출

에러 메세지 : Error: EEXIST: file already exists, mkdir 

해석 :  해당 경로의 이미 같은 폴더가 존재한다.

해결방법 : 해당 경로의 폴더가 있는지 확인합니다. 

// 오류 발생 : Error: EEXIST: file already exists, mkdir 
// 오류를 해결하려면 조건문을 수정할 필요가 생김
// 동기적 호출
if(!File) {
    const text =  fs.mkdirSync('./test');
    console.log(text);
} 
console.log("실행중..")

 

 

2-6. 폴더 안에 파일 추가 

fs.writeFile( )로 파일 생성

+ 추가 정보

// fs.writeFile()
// 폴더안에 파일을 추가
// 첫 번째 매개변수는 Path 경로
// 두 번째 매개변수는 파일의 담을 내용
// 세 번째 매개변수는 콜백 함수


fs.writeFile( )로 test 폴더 안에 text.js 파일을 추가한 코드 # 비동기식 호출

// 생성한 test 폴더안에 파일 생성
// fs.writeFile("path", "파일의 담을 내용", (콜백함수))

// 파일의 담을 내용을 정의
const content = `const a = 20;`

// ./test 경로안에 text.js 파일을 생성하고
// 파일의 담을 내용은 content 에 저장이 됨
// 콜백함수로 err 객체가 있고
// 오류가 발생하면 콜백함수를 실행
fs.writeFile('./test/text.js', content, (err) => {
    if(err) {
        console.log(err);
    } else {
        console.log(content);
    }
})

콘솔에 출력된 content에 담긴 내용이다.

test 폴더안에 text.js 파일이 추가되는 것을 볼  수 있다.

2-7. 파일 읽어오기 (Read)

fs.readFile( )  사용 코드   # 비동기식 호출

// fs.readFile() # 비동기식 호출
// 파일을 읽어오는데 사용되는 메서드
// 매개변수 
// 1. 파일의 경로
// 2. 옵션 (파일 인코딩, 문자열 객체 등등)
// 3. 콜백함수를 받는데 콜백함수와, 파일 내용을 매개변수로 받을 수 있다.
fs.readFile('./test/text.js', "utf-8", (err, content) => {
    if(err) {
        console.log(err);
    } else {
        console.log(content);
    }
})


실행 결과


fs.readFileSync( ) 파일 읽어오기  #동기식 호출 

// fs.readFileSync() # 동기식 호출
// 매개변수
// 1. path(경로)
// 2. 옵션 (파일 인코딩, 문자열 객체 등등)
const sample = fs.readFileSync('./test/text.js', "utf-8");
console.log(sample);


실행결과


fs.readFile( ) 메서드와 fs.readFileSync( ) 메서드의 차이점


2-8. 파일 내용 덮어쓰기 (Update)

const content = `const a = 20;`

const content2 = `const b = 10;`

// ./test 경로안에 text.js 파일을 생성하고
// 파일의 담을 내용은 content 에 저장이 됨
// 콜백함수로 err 객체가 있고
// 오류가 발생하면 콜백함수를 실행
fs.writeFile('./test/text.js', content2, (err) => {
    if(err) {
        console.log(err);
    } else {
        console.log(content2);
    }
})

 



2-9. 파일 및 폴더 삭제 (Delete)

fs.rm( ) # 비동기식 호출
+ 추가 정보

// 파일 및 폴더를 삭제
// fs.rm() 
// 매개변수
// 1. path(경로)
// 2. 콜백함수
fs.rm('./test/text.js', (err) => {
    if(err) {
        console.log(err);
    } else {
        console.log("폴더가 삭제되었습니다.")
    }
})

이렇게 실행결과를 보시면 test 폴더안에 text.js 파일이 삭제된 것을 확인할 수 있습니다.

결론

fs 모듈을 이용한 파일 및 폴더에 대한 CRUD 를 제어할 수 있었습니다.

 

LIST

'Node.js 기록' 카테고리의 다른 글

Node JS 버퍼(Buffer), 스트림(Stream) 개념 정리📑  (0) 2025.02.20
Node.js 란 무엇인가?  (0) 2025.02.18