어떤 장치에서 다른 장치로 데이터를 송신할 때 일어나는 시간의 차이나 데이터 흐름의 속도 차이를 조정하기 위해 일시적으로 데이터를 기억시키는 장치. 순화어는 `완충기'.
Buffer는 Node.js에서 주로 사용되는 객체로, 바이너리 데이터를 처리하고 다루기 위해 사용됩니다. 일반적으로 텍스트, 이미지, 오디오 파일과 같은 이진 데이터를 처리할 때 유용합니다. JavaScript에서는 문자열을 처리할 때 유니코드를 기반으로 하지만, Buffer는 텍스트뿐만 아니라 바이너리 데이터를 직접 다룰 수 있도록 도와줍니다.
Buffer는 0부터 255 사이의 정수 값을 가지는 바이트 배열로, 메모리에 바이너리 데이터를 저장합니다.Buffer는 특히 파일 시스템이나 네트워크에서 데이터를 읽고 쓸 때 유용합니다. 예를 들어, 파일을 읽거나 네트워크 요청을 통해 이진 데이터를 주고받을 때 사용됩니다.Buffer는 메모리 공간을 고정된 크기로 할당하고, 데이터를 빠르게 처리할 수 있습니다.Buffer 생성
Buffer는 여러 가지 방법으로 생성할 수 있습니다:
배열로부터 생성:
const buffer = Buffer.from([72, 101, 108, 108, 111]);
console.log(buffer.toString()); // 출력: "Hello"
문자열로부터 생성:
const buffer = Buffer.from('Hello');
console.log(buffer); // 출력: <Buffer 48 65 6c 6c 6f>
지정된 크기의 버퍼 생성:
const buffer = Buffer.alloc(10); // 크기 10의 버퍼 생성
console.log(buffer); // 출력: <Buffer 00 00 00 00 00 00 00 00 00 00>
버퍼 조작
Buffer는 데이터의 일부를 변경할 수 있습니다:
const buffer = Buffer.from('Hello');
buffer[0] = 74; // 'H'에서 'J'로 변경
console.log(buffer.toString()); // 출력: "Jello"버퍼의 크기
Buffer 객체는 length 속성을 사용하여 크기를 알 수 있습니다.
const buffer = Buffer.from('Hello');
console.log(buffer.length); // 출력: 5
버퍼의 부분 복사
Buffer는 데이터를 복사할 수 있는 방법도 제공합니다:
const buffer = Buffer.from('Hello World');
const copy = buffer.slice(0, 5); // "Hello" 부분만 복사
console.log(copy.toString()); // 출력: "Hello"
Buffer.from(array): 배열을 기반으로 버퍼를 생성.Buffer.from(string, encoding): 문자열을 기반으로 버퍼를 생성 (인코딩 옵션 제공).Buffer.alloc(size): 지정된 크기의 버퍼를 생성하고, 기본적으로 0으로 채움.Buffer.allocUnsafe(size): 지정된 크기의 버퍼를 생성하고, 초기화되지 않은 데이터를 포함.buffer.toString([encoding], [start], [end]): 버퍼를 문자열로 변환.buffer.slice([start], [end]): 버퍼의 일부를 잘라내어 새 버퍼를 반환.Buffer는 파일 시스템 작업과 관련이 많습니다. 예를 들어, Node.js에서 파일을 읽을 때는 이진 데이터로 읽고, 이를 Buffer 객체로 다룰 수 있습니다.
const fs = require('fs');
// 파일 읽기 (이진 데이터)
fs.readFile('image.png', (err, data) => {
if (err) throw err;
console.log(data); // <Buffer ...>
});
Buffer는 이진 데이터를 메모리에서 효율적으로 처리하고 다룰 수 있도록 설계된 객체입니다.