개체를 만드는 방법에는 두 가지가 있습니다.CArchive
프레임워크를 통해 CArchive 개체의 암시적 생성
가장 일반적이고 쉬운 방법은 프레임워크가 파일 메뉴의 저장, 다른 이름으로 저장 및 열기 명령을 대신 문서에 대한 개체를 만들도록 하는 것입니다.
애플리케이션 사용자가 파일 메뉴에서 다른 이름으로 저장 명령을 발급할 때 프레임워크가 수행하는 일은 다음과 같습니다.
다른 이름으로 저장 대화 상자를 표시하고 사용자로부터 파일 이름을 가져옵니다.
사용자가 개체로
CFile명명한 파일을 엽니다.이
CArchive개체를 가리키는CFile개체를 만듭니다. 개체를CArchive만들 때 프레임워크는 "로드"(읽기, 역직렬화)가 아닌 모드를 "저장"(쓰기, 직렬화)으로 설정합니다.Serialize함수가CDocument에서 파생된 클래스에서 호출되어CArchive객체에 대한 참조를 전달합니다.
그러면 문서의 Serialize 함수는 곧 설명한 대로 개체에 CArchive 데이터를 씁니다. 함수에서 Serialize 돌아오면 프레임워크가 먼저 CArchive 개체를 삭제한 다음, CFile 개체를 삭제합니다.
따라서 프레임워크에서 문서를 위한 개체 CArchive을(를) 만들도록 허용하면, 보관 파일에 쓰고 읽는 문서의 Serialize 함수를 구현하기만 하면 됩니다.
Serialize 파생 개체에 대해서도, 문서의 CObject 함수가 직접 또는 간접적으로 직렬화하는 경우, Serialize을(를) 구현해야 합니다.
CArchive 개체의 명시적 생성
문서를 프레임워크를 통해 직렬화하는 것 외에도 CArchive 개체가 필요한 경우가 있습니다. 예를 들어 CSharedFile 객체로 표현된 클립보드로 데이터의 직렬화를 수행하거나 클립보드로부터 데이터를 직렬화할 수 있습니다. 또는 프레임워크에서 제공하는 것과 다른 파일을 저장하기 위해 사용자 인터페이스를 사용할 수 있습니다. 이 경우 개체를 CArchive 명시적으로 만들 수 있습니다. 다음 절차를 사용하여 프레임워크와 동일한 방식으로 이 작업을 수행합니다.
CArchive 개체를 명시적으로 만들려면
CFile개체 또는CFile에서 파생된 개체를 생성합니다.CFile개체를CArchive생성자에 전달하는 방법은 다음 예제와 같습니다.CFile theFile; theFile.Open(_T("CArchive__Test.txt"), CFile::modeCreate | CFile::modeWrite); CArchive archive(&theFile, CArchive::store);CArchive생성자의 두 번째 인수는 데이터를 파일에 저장하거나 파일에서 로드하는 데 아카이브를 사용할지를 지정하는 열거형 값입니다. 객체의Serialize함수는 보관 객체의IsStoring함수를 호출하여 이 상태를 확인합니다.
CArchive 개체에 데이터를 저장하거나 로드를 마친 후에는 닫아야 합니다.
CArchive (및CFile) 개체는 보관 파일(및 파일)을 자동으로 닫지만 오류 복구를 더 쉽게 수행할 수 있으므로 명시적으로 닫는 것이 좋습니다. 오류 처리에 대한 자세한 내용은 예외: 예외 잡기 및 삭제 기사를 참조하세요.
CArchive 개체를 닫려면
다음 예제에서는
CArchive개체를 닫는 방법을 보여줍니다.archive.Close(); theFile.Close();