Чтение из архивного файла
Чтение из архивного файла
В предыдущем разделе мы рассказали как сохранить объект вашего класса в архивном файле. Теперь опишем, как восстановить записанное ранее состояние объекта класса из архивного файла. Когда приложение желает восстановить состояние объекта данного класса, оно вызывает для него метод Serialize. В качестве параметра этому методу передается указатель на объект класса CArchive, связанного с файлом, открытым для чтения.
Реализация метода Serialize должна восстановить из файла все элементы данных, которые были в него записаны. Для этого можно воспользоваться оператором >> или методами ReadString и Read, определенными в классе CArchive.
Вы должны считывать данные из архивного файла именно в том порядке, в котором они были в него записаны.
Оператор >> можно использовать для чтения из архивного файла переменных простых типов, например long, int, char и объектов других классов, которые наследованы от класса CObject. В одной строке программы можно использовать оператор >> несколько раз.
Для чтения из архивного файла массивов, записанных в него методом Write, надо использовать метод Read класса CArchive. Он позволяет прочитать из файла определенное количество байт и записать его в указанный буфер:
UINT Read(void* lpBuf, UINT nMax) throw(CFileException);
Параметр lpBuf определяет буфер памяти, в который будут записаны считанные из файла данные. Параметр nMax указывает максимальное количество байт, которое можно считать из архивного файла и записать в буфер lpBuf. Метод Read возвращает количество прочитанных байт.
Если требуется прочитать из архивного файла строку, записанную в него методом WriteString, воспользуйтесь методом ReadString. В состав класса CArchive входят два метода ReadString, которые предназначены для записи прочитанной из файла строки в объект класса CString или в строку Си.
Первый метод имеет более простой прототип. Единственный параметр rString определяет объект класса CString, в который будет записана полученная информация. Если метод ReadString успешно завершит чтение, он возвращает значение TRUE, в противном случае – значение FALSE:
BOOL ReadString(CString& rString);
Если вам надо записать прочитанную из архивного файла строку в массив символов, воспользуйтесь другим прототипом метода ReadString:
LPTSTR ReadString(LPTSTR lpsz, UINT nMax) throw(CArchiveException);
Параметр lpsz должен указывать на буфер памяти, в который будет записана информация. Параметр nMax определяет максимальное количество символов, которое метод может прочитать из файла. Размер буфера lpsz должен быть как минимум на единицу больше, чем значение nMax (в конец строки lpsz будет записан символ ).
Когда метод Serialize завершит работу по восстановлению или записи объекта из архивного файла, вы должны закрыть используемый для этого объект класса CArchive. Для этого необходимо вызвать метод Close:
void Close() throw(CArchiveException, CFileException);
После вызова этого метода закройте файл, связанный с объектом CArchive, вызвав метод CFile::Close, и удалите сам объект класса CFile.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Чтение файла
Чтение файла BOOL ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped) Возвращаемое значение: в случае успешного выполнения (которое считается таковым, даже если не был считан ни один байт из-за попытки чтения с выходом за пределы файла) — TRUE, иначе —
Установка размера файла, инициализация файла и разреженные файлы
Установка размера файла, инициализация файла и разреженные файлы Функция SetEndOfFile позволяет переустановить размер файла, используя текущее значение указателя файла для определения его размера. Возможно как расширение, так и усечение файла. В случае расширения файла
25.3. Чтение записей
25.3. Чтение записей Прочитать записи в базе данных можно двумя способами: посредством поиска записи по ее ключу и путем чтения последовательных пар
Архивация и восстановление файлов. Создание архивного образа компьютера Complete PC
Архивация и восстановление файлов. Создание архивного образа компьютера Complete PC В предыдущем подразделе речь шла о сохранении в виде точек восстановления параметров системы для возможности вернуться к ним при сбое. В данном подразделе мы поговорим о том, как уберечься от
18.3. Чтение и запись
18.3. Чтение и запись Создав маршрутизирующий сокет, процесс может отправлять ядру команды путем записи в этот сокет и считывать из него информацию от ядра. Существует 12 различных команд маршрутизации, 5 из которых могут быть запущены процессом. Они определяются в
Чтение почты
Чтение почты Прежде чем начать читать почту, ее необходимо получить. Для этого нажимаем кнопку Доставить почту на панели инструментов. После загрузки новых сообщенийна компьютер их можно обнаружить в папке Входящие. Чтобы в нее попасть, щелкаем на значке Входящие в
10.1.21. Чтение всего файла в память
10.1.21. Чтение всего файла в память Чтобы прочитать весь файл в массив, не нужно даже его предварительно открывать. Все сделает метод IO.readlines: откроет файл, прочитает и закроет.arr = IO.readlines("myfile")lines = arr.sizeputs "myfile содержит #{lines} строк."longest = arr.collect {|x| x.length}.maxputs "Самая длинная строка
10.1.22. Построчное чтение из файла
10.1.22. Построчное чтение из файла Чтобы читать по одной строке из файла, можно обратиться к методу класса IO.foreach или к методу экземпляра each. В первом случае файл не нужно явно открывать.# Напечатать все строки, содержащие слово "target".IO.foreach("somefile") do |line| puts line if line =~ /target/end# Другой
10.1.23. Побайтное чтение из файла
10.1.23. Побайтное чтение из файла Для чтения из файла по одному байту служит метод экземпляра each_byte. Напомним, что он передает в блок символ (то есть целое число); воспользуйтесь методом chr, если хотите преобразовать его в «настоящий» символ.file = File.new("myfile")e_count = 0file.each_byte do
Чтение из текстового файла
Чтение из текстового файла Теперь выясним, как программными средствами читать данные из файла, используя соответствующий тип StreamReader. Вы должны помнить, что этот класс получается из TextReader, функциональные возможности которого описаны в табл. 16.8.Таблица 16.8. Основные члены
Чтение одиночного файла
Чтение одиночного файла Каким может быть идеальный признак STOP? Это должен быть такой символ, который обычно не используется в тексте и следовательно, не приводит к ситуации, когда он случайно встретится при вводе, и работа программы будет остановлена раньше чем мы
2.2.3.3 Опережающее чтение
2.2.3.3 Опережающее чтение Сервер OnLine DS может быть сконфигурирован таким образом, чтобы при чтении последовательной таблицы или индексного файла обеспечивалось опережающее чтение нескольких страниц в то время, пока обрабатываются уже прочитанные в разделяемую память
Пример 11-6. Чтение командой read из файла через перенаправление
Пример 11-6. Чтение командой read из файла через перенаправление #!/bin/bashread var1 <data-fileecho "var1 = $var1"# Первая строка из "data-file" целиком записывается в переменную var1read var2 var3 <data-fileecho "var2 = $var2 var3 = $var3"# Обратите внимание!# Поведение команды "read" далеко от ожидаемого!# 1) Произошел возврат