복합 파일 이진 형식

복합 파일 이진 형식(Compound File Binary Format, CFBF, Compound File, Compound Document format, Composite Document File V2 Document)은 여러 파일과 디렉터리를 하나의 파일에 저장하는 마이크로소프트의 파일 형식이다.

구조 
복합 파일은 하나의 헤더와 다수의 섹터로 구성되어 있다. 섹터는 파일 할당 테이블, 디렉터리 배열, 사용자 스트림 등의 저장 단위이다. 복합 파일을 여는 과정은 헤더로 파일할당표와 디렉터리 배열을 만들고 이것들을 이용해 사용자 스트림을 조립하는 것으로 요약할 수 있다.

사용자 스트림은 스토리지와 함께 복합 파일을 이루는 사용 단위이다. 복합 파일을 이용하는 프로그램은 사용자 스트림에 자신의 자료를 저장한다. 스트림은 스토리지에 소속되어 분류되고 스토리지는 또 다른 스토리지에 속한다. 따라서 복합 파일의 스트림과 스토리지는 일반적인 파일 시스템의 파일과 디렉터리에 각각 대응한다고 할 수 있다. 모든 스트림과 스토리지는 루트 엔트리라는 최상위 스토리지에 포함된다. 루트 엔트리는 스토리지인 동시에 64바이트 크기의 섹터들을 저장하는 스트림이다.

프로그램 
마이크로소프트 워드 97 이후의 .doc 파일 형식과 한글과컴퓨터의 한/글 워디안 이후의 .hwp 파일 형식 등이 복합 파일 이진 형식을 쓰고 있다. 이진 파일 형식은 다른 운영 체제나 기종에서 사용하기가 까다롭기 때문에 최근에는 오피스 오픈 XML, 오픈도큐먼트, HWPML처럼 XML을 이용하는 추세이다.

관련 API 
 IStorage, IStream: 마이크로소프트의 복합 파일 인터페이스
 libgsf: 그놈의 복합 파일 라이브러리

각주

참고 자료 
 "MS-CFB : Compound File Binary File Format", 마이크로소프트
 "Microsoft Compound Document File Format", 오픈오피스.org

파일 포맷