[Node.js] #3 File System

✨New Wisdom✨·2020년 7월 26일
1

📗 Nodejs 📗

목록 보기
4/20

이 노트는 “Node.js 교과서”를 공부하면서 기록되었다.

File System Module

Node.js의 파일 시스템 모듈은 컴퓨터에 있는 파일 시스템이 작동하게 한다. 파일의 생성, 삭제, 읽기, 쓰기 등을 수행할 수 있으며, 폴더를 생성하고 삭제한다.

File System 모듈 사용법

const fs = require('fs');

파일 시스템 모듈은 ‘fs’가 가지고 있다. require로 불러서 사용한다.

File 읽기(Read)

const fs = require('fs');

// 비동기 
fs.readFile('hello.wav',(err,data)=>{
    if(err){
        throw err;
    }
    console.log(data);
})

//동기
const text = fs.readFileSync('hello.wav');
console.log(text);

비동기적 읽기는 fs.readFile(file path, [options], callback) 형태로 작성하며, 동기적 읽기는 fs.readFileSync(file path, [options]) 형태로 작성한다.

비동기적 읽기는 파일을 읽어오는 동안 다른 작업이 수행 가능하다.
하지만 동기적 읽기 경우는 파일을 읽는 동안 다른 작업을 처리하지 않는다.

File 쓰기(Write)

const fs = require('fs');

const text = 'write Test'
// 비동기 
fs.writeFile('hello.txt',text,'utf-8',(err,data)=>{
    if(err){
        throw err;
    }
    console.log(data);
})

//동기
fs.writeFileSync('hello.txt0,text','utf-8')

비동기적 쓰기는 fs.readFileSync(file path, [options]) 형태로 작성하며,
동기적 쓰기는 fs.writeFileSync(file path, data, [options]) 형태로 작성한다.

그런데 fs 모듈로 파일을 읽어 콘솔에 출력해보면

이런 형태로 뜬다. 나는 분명 txt 파일을 읽어왔는데 여기 있는 Buffer는 무엇인가?


Buffer와 Stream

Buffer / Buffering

fs 모듈로 파일을 읽어올 때 Buffer 형식으로 출력되었었다. 노드는 파일을 읽어 올 때에 메모리에 파일의 크기만큼 공간을 확보하는데 여기서 메모리에 저장된 데이터를 Buffer라고 한다. 데이터를 조각(chunk) 내어서 buffer에 채운 후 꽉 차면 Buffer를 통째로 옮기고 새 Buffer에 데이터 조각을 다시 채운다. 이렇게 조각들을 Buffer에 채우는 일을 버퍼링이라고 한다. 영상을 재생할 수 있을 때까지 데이터를 모으는 방식이다.

버퍼는 모든 내용을 버퍼에 다 쓰고 나서 다음 동작으로 넘어가기 때문에 데이터 크기가 커지면 빠른 처리가 어려울 수 있다.
Stream
때문에 나온 방식이 바로 Stream 이다. Stream은 버퍼의 크기를 작게 만들어서 여러 번에 나누어 보내는 방식으로 동작한다.
데이터를 전송하는 주체에서 수신자 까지 영상 데이터를 조금씩 전송하는 방식이다.

profile
🚛 블로그 이사합니다 https://newwisdom.tistory.com/

0개의 댓글