Как прочитать файл до конца, используя класс
CFile.
Вопрос (Alessandro Chiodo):
Я использую в своём приложении класс CFile. При
помощи этого класса я открываю файл, считываю и
записываю в него. Но у меня не получается считать
файл до конца (EOF). Обрабатываю CFileException::endOfFile,
однако получаю бесконечный цикл.
Ответ (Paul DiLascia):
Странно, не так ли ? Когда при считывании файла
мы доходим до конца, то ожидаем получить
исключение конца файла. А иначе для чего ещё
придумана endOfFile ? Однако, в данном случае MFC не
использует CFileException::endOfFile. Для определения конца
файла нам потребуется проверить, является ли
количество фактически считанных байт меньше чем
количество запрошенных.
CFile file;
file.Open();
char mybuf[BUFSIZ];
UINT nread;
do (nread=file.read(buf, BUFSIZ)) {
•••
// обрабатываем nread байт
} while (nread==BUFSIZ);
Данный способ может показаться странным, но не
я же придумывал эти правила.
|