[Node.js] 모듈 살펴보기 - fs

오버·2022년 6월 28일
0

Node.js Study

목록 보기
7/22

시작하기 전에...

어... 오늘은 여러가지 모듈에 대해 알아보는 시간이죠??
솔직히... 뭘 소개하면 좋을까~ 싶어서 구글에 쳐봤는데 역시 이 모듈을 소개하지 않을 수 없겠더라고요.

FS 모듈?

네, 오늘 배울 것은 fs 모듈입니다.
이 친구로 말할 것 같으면 파일에 관한 접근을 easy하게 해주는 모듈이에요~

바로 실습으로 들어가겠습니다.

FS 모듈 사용하기

FS도 저번에 배운 body-parser 처럼 내장 모듈이에요!
그래서 번거롭게 install 하는 과정은 필요 없다는 거~

const fs = require("fs");

이거 한 줄이면 모듈 들고오는 거는 끄읕!

그럼 사용법을 알아봅시다.

일단 그 전에~
txt 파일을 하나 만들어줄께요. 내용은 딱히 상관 없습니다.

txt 파일을 만들었다면 한 번 불러오는 코드를 작성해봅시다.

fs.readFile("./test.txt", (err, data) => {
    if(err) console.log(err);
    console.log(data.toString());
})

fs.readFile이 File을 불러오는 명령어 입니다.
data를 string으로 변환을 거쳐주는 이유는 이게 stringBuffer로 값을 전달하는 거 같더라고요?? 그래서 string으로 변환 시켜줘야 저희가 원하는대로 데이터가 잘 나옵니다!
arrow function은 다들 잘 아시죠??
그리고 err를 자체적으로 잡을 수 있는 점이 저는 편하더라고요~

오우 잘 나왔죠??

그럼 이번엔 저희가 파일을 만들어 볼께요.

const json = {
    name: 'over',
    age: '18',
    subject: 'software'
}
fs.writeFile('Infomation.json', JSON.stringify(json), (err) => {
    if(err) console.log(err);
})

보통 저희가 현업에서 사용할 때는 json 데이터를 파싱해서 json 파일을 만들어서 클라이언트에게 보내는 식으로 많이 이용할 것 같아서 json 데이터를 만들어서 만든 데이터를 이용해서 file을 만드는 코드를 짰습니다.

fs.writeFile(파일명, 내용...)으로 사용할 수 있습니다.
저희가 눈여겨 볼 것은 내용 부분에 오로지 string 타입만 올 수 있다는 겁니다. 그러니까 숫자를 넣을때도 toString()으로 변환해서 넣어야한다는 거!
잊지 말아줬음 합니다. 안 그러면...

Uncaught TypeError TypeError [ERR_INVALID_ARG_TYPE]: The "data" argument must be of type string or an instance of Buffer, TypedArray, or DataView. Received an instance of Object

라는 무시무시한 에러 코드가 뜹니다! ㅎㄷㄷ...

아무튼 결과를 보자면...

json 파일에 데이터들이 잘 들어갔습니다~~~ 짝짝짝

read/write 외에도 stat라는 메소드도 있는데 이 메소드는 파일이 있나 없나 확인해주는 아주 유용한 메소드에요!

fs.stat("Infomation.json", (err, stats) => {
    if (err) console.log(err)
    else console.log('파일 찾음')
})

코드는 이렇게 생겼습니다.

첫 번째 인자에 유무를 확인하고 싶은 파일명을 입력하고(경로는 필요 없는 듯!)
나머지는 똑같은 사용법이에요!

대충 결과를 보자면...

있을 때

없을 떄

네, 잘 작동하네요.
특히 파일의 유뮤를 확인하는 코드인만큼 많이 쓰일 것 같습니다. 저도 fs를 쓰면 이걸 쓰지 않았던 적인 거의~ 없던 거 같습니다!! 중요도 100

마치면서...

오늘은 node.js의 유용한 모듈 fs에 대해서 배워봤습니다. 다음 시간에는 뭘 배우면 좋을까요? 음... 아마도 multer를 배울 것 같기는 해요. ㅎㅎ 요즘 어떤 사이트든 왠만하면 사진 올리는 것 쯤은 있잖아요??

그럼 다음 시간에는 더 유익한 정보를 전달할 수 있도록 노력하겠습니다. bye bye

profile
개발자

0개의 댓글