다음을 통해 공유


CArchive 개체를 만드는 두 가지 방법

개체를 만드는 방법에는 두 가지가 있습니다.CArchive

프레임워크를 통해 CArchive 개체의 암시적 생성

가장 일반적이고 쉬운 방법은 프레임워크가 파일 메뉴의 저장, 다른 이름으로 저장 및 열기 명령을 대신하여 문서에 대한 개체를 만들 CArchive 도록 하는 것입니다.

애플리케이션 사용자가 파일 메뉴에서 다른 이름으로 저장 명령을 발급할 때 프레임워크가 수행하는 일은 다음과 같습니다.

  1. 다른 이름으로 저장 대화 상자를 표시하고 사용자로부터 파일 이름을 가져옵니다.

  2. 사용자가 개체로 CFile 명명한 파일을 엽니다.

  3. CFile 개체를 CArchive 가리키는 개체를 만듭니다. 개체를 CArchive 만들 때 프레임워크는 "로드"(읽기, 역직렬화)가 아닌 모드를 "저장"(쓰기, 직렬화)으로 설정합니다.

  4. Serialize 파생 클래스에 CDocument정의된 함수를 호출하여 개체에 대한 참조를 CArchive 전달합니다.

그러면 문서의 Serialize 함수는 곧 설명한 대로 개체에 CArchive 데이터를 씁니다. 함수에서 Serialize 돌아오면 프레임워크는 개체를 CArchive 삭제한 다음 개체를 CFile 삭제합니다.

따라서 프레임워크에서 문서에 대한 개체를 만들 CArchive 도록 허용하면 보관 파일에서 쓰고 읽는 문서의 Serialize 함수를 구현하기만 하면 됩니다. 또한 문서의 Serialize 함수가 직접 또는 간접적으로 직렬화하는 파생 개체에 대해서도 구현 Serialize CObject해야 합니다.

CArchive 개체의 명시적 생성

프레임워크를 통해 문서를 직렬화하는 것 외에도 개체가 필요할 CArchive 수 있는 경우도 있습니다. 예를 들어 개체가 나타내는 CSharedFile 클립보드에서 데이터를 직렬화할 수 있습니다. 또는 프레임워크에서 제공하는 것과 다른 파일을 저장하기 위해 사용자 인터페이스를 사용할 수 있습니다. 이 경우 개체를 CArchive 명시적으로 만들 수 있습니다. 다음 절차를 사용하여 프레임워크와 동일한 방식으로 이 작업을 수행합니다.

CArchive 개체를 명시적으로 만들려면

  1. CFile 에서 파생된 개체 또는 개체를 CFile생성합니다.

  2. 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) 개체는 보관 파일(및 파일)을 자동으로 닫지만 오류 복구를 더 쉽게 수행할 수 있으므로 명시적으로 닫는 것이 좋습니다. 오류 처리에 대한 자세한 내용은 예외: 예외 Catch 및 삭제 문서를 참조하세요.

CArchive 개체를 닫려면

  1. 다음 예제에서는 개체를 닫는 방법을 보여 줍니다 CArchive .

    archive.Close();
    theFile.Close();
    

참고 항목

Serialization: 개체 Serialize