//동기적으로 파일을 읽을 때
readFileSync
//비동기적으로 파일을 읽을때
readFile
동기 메서드는 작업이 완료될 때까지 프로세스를 블로킹, 이로 인해 애플리케이션의 다른 작업이 잠시 멈출 수 있다.
비동기 메서드는 작업을 백그라운드로 처리하며 콜백 또는 Promise
로 결과를 받는다.
버퍼는 파일 내용을 한 번에 메모리에 올릴 때 유용하지만, 대용량 데이터에는 비효율적입니다.
메모리에 10MB 공간을 확보 하고 진행
10개면 100MB 공간을 확보
➿ 미리 확보를 해야하기 때문에 효율이 좋지 않을 수 있다.
fs.readFile('example.txt', (err, data) => {
if (err) throw err;
console.log('버퍼 데이터:', data);
});
파일서버를 구축하기 어려울때는
base64
로 인코딩해서 이미지를 변경해서 업로드한다.
스트림은 데이터를 청크 단위로 처리하여 메모리 사용량을 줄인다.
읽기 스트림과 쓰기 스트림으로 나눈다.
10MB 를 1MB 단위로 처리하여 10번 보낸다.
➿ 단위로 처리하여 메모리 사용량을 줄일 수 있다.
const readStream = fs.createReadStream('example.txt', 'utf8');
readStream.write("스트림 방식으로 쓰기 완료")
readStream.end("쓰기 완료")
const readStream = fs.createReadStream('example.txt', 'utf8');
const copyStream = fs.createWriteStream()
readStream.pipe(copyStream)
const readStream = fs.createReadStream('example.txt', {
encoding: 'utf8',
highWaterMark: 16,}); // 16으로 쪼개서 표현해라
버퍼 | 스트림 |
---|---|
100mb 1개 100mb 필요 | 100mb 100개 1mb 필요 |
100mb 10개 1000mb 필요 | 100mb 100개 10mb 필요 |
서버와 클라이언트 간의 데이터를 전송할 때 사용되는 데이터 형식을 정의,
클라이언트가 서버로부터 데이터를 받을 때, 해당 데이터가 어떤 종류인지 알려준다.
타입 종류를 볼 수 있는 곳 : media-types 정의
// 예시: Express.js 서버에서 MIME 타입 설정하기
const express = require('express');
const app = express();
const path = require('path');
1. pdf 설정하기
app.get('/download-pdf', (req, res) => {
const filePath = path.join(__dirname, 'sample.pdf');
// Content-Type 헤더에 MIME 타입을 설정
res.setHeader('Content-Type', 'application/pdf');
// PDF 파일을 응답으로 보냄
res.sendFile(filePath);
});
2. text 설정하기
app.get('/plain-text', (req, res) => {
// Content-Type 헤더에 텍스트 MIME 타입 설정
res.setHeader('Content-Type', 'text/plain');
res.send('This is a plain text file.');
});
특정 기능을 이벤트에 등록해서 한 번에 수행하고 싶을 때 사용
const EventEmitter = require("event")
const myEvent = new EventEmitter()
// 등록
// .on()
myEvent.on("greet", (name, age)=> {
console.log(`안녕하소 ${name} 나이는 ${age}`)
})
// 호출
// .emit()
myEvent.emit("greet", "철수", 20)
//제거
const event