Binary I/O

바이너리 파일은 값을 텍스트가 아니라 바이트 계약으로 저장한다

텍스트 파일은 사람이 읽기 쉬운 문자로 바꾸지만, 바이너리 파일은 정해진 크기의 바이트를 그대로 보존하고 같은 규칙으로 다시 해석합니다.

텍스트 모드

값을 문자로 바꿔 저장하므로 읽을 때 다시 파싱해야 합니다.

int 2025를 문자로 저장
'2' '0' '2' '5' '\\n'

바이너리 모드

메모리의 바이트 수와 순서를 파일 포맷의 일부로 다룹니다.

int 2025를 4바이트로 저장, little-endian 예
E9 07 00 00
1 모드 지정ios::binary줄바꿈 변환 없이 파일을 엽니다.
2 크기 고정sizeof(T)몇 바이트를 쓸지 코드가 정합니다.
3 그대로 저장write()지정한 바이트 수만큼 파일에 보냅니다.
4 같은 규칙 복원read()같은 타입, 크기, 순서로 해석합니다.
mode텍스트 변환을 막기 위해 binary 플래그를 둡니다.
size읽은 바이트 수가 기대와 같은지 확인합니다.
schema필드 순서와 길이를 파일 포맷으로 고정합니다.
portability엔디안, 패딩, 버전을 문서화합니다.
바이너리 I/O의 핵심은 빠른 저장이 아니라, 쓴 쪽과 읽는 쪽이 같은 바이트 계약을 공유하는 것입니다.