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