FileStorage::open() 함수의 첫 번째 인자 filename에는 데이터 파일 이름을 지정합니다. FileStorage 클래스는 XML, YAML, JSON 형식의 파일 입출력을 지원하며, 사용할 파일 형식은 filename의 확장자에 의해 자동으로 결정됩니다. 예를 들어 filename의 확장자가 *.xml이면 XML 파일 형식을 사용하고, *.yml 또는 *.yaml이면 YAML 파일 형식을 사용합니다. filename의 확장자가 *.json이면 JSON 파일 형식을 사용합니다. 만약 데이터 파일 이름 뒤에 .gz를 추가하면 데이터 파일을 압축하여 저장합니다. 예를 들어 filename을 “mydata.xml.gz”로 설정하면 XML 파일 형식으로 데이터를 저장한 후 gzip 형식으로 압축합니다. FileStorage::open() 함수의 두 번째 인자 flags는 파일 열기 모드를 결정합니다. flags 인자에는 FileStorage::mode 열거형 상수를 지정할 수 있으며, 주로 사용되는 상수는 표 4-10에 나타냈습니다. FileStorage::open() 함수의 세 번째 인자에는 XML 파일의 인코딩 형식을 지정하는 문자열을 지정할 수 있으며, 기본값이 설정되어 있으므로 생략할 수 있습니다.
▼ 표 4-10 주요 FileStorage::mode 열거형 상수
FileStorage::mode 열거형 상수 |
설명 |
FileStorage::READ |
읽기 모드 |
FileStorage::WRITE |
쓰기 모드(새로 생성) |
FileStorage::APPEND |
추가로 쓰기 모드 |
FileStorage::MEMORY |
논리합 연산자(|)를 이용하여 FileStorage::READ 또는 FileStorage::WRITE 상수와 함께 사용될 경우, 실제 파일 입출력 대신 메모리 버퍼를 이용한 입출력을 수행합니다. |