Pomijanie mechanizmu serializacji
Jak już wiesz, struktura zapewnia domyślny sposób odczytywania i zapisywania danych do i z plików. Serializacja za pośrednictwem obiektu archiwum odpowiada potrzebom wielu aplikacji. Taka aplikacja odczytuje plik w całości w pamięci, pozwala użytkownikowi zaktualizować plik, a następnie ponownie zapisuje zaktualizowaną wersję na dysku.
Jednak niektóre aplikacje działają na danych zupełnie inaczej, a w przypadku tych aplikacji serializacji za pośrednictwem archiwum nie jest odpowiednie. Przykłady obejmują programy bazy danych, programy, które edytują tylko części dużych plików, programy, które zapisują pliki tylko tekstowe, i programy, które współużytkujące pliki danych.
W takich przypadkach można zastąpić funkcję Serialize w inny sposób, aby mediatować akcje plików za pośrednictwem obiektu CFile , a nie obiektu CArchive .
Możesz użyć Open
funkcji składowych , Read
, Close
Write
i Seek
klasyCFile
, aby otworzyć plik, przenieść wskaźnik pliku (szukać) do określonego punktu w pliku, odczytać rekord (określoną liczbę bajtów) w tym momencie, pozwolić użytkownikowi zaktualizować rekord, a następnie ponownie zastosować ten sam punkt i zapisać rekord z powrotem do pliku. Struktura otworzy plik i możesz użyć GetFile
funkcji składowej klasy CArchive
, aby uzyskać wskaźnik do CFile
obiektu. W celu jeszcze bardziej zaawansowanego i elastycznego użycia można zastąpić funkcje składowe OnOpenDocument i OnSaveDocument klasy CWinApp
. Aby uzyskać więcej informacji, zobacz klasa CFile w dokumentacji MFC.
W tym scenariuszu Serialize
przesłonięcia nie działają nic, chyba że na przykład chcesz, aby odczytywał i zapisywał nagłówek pliku, aby zachować jego aktualność po zamknięciu dokumentu.