| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > [VC++] Запись текста в бинарый/двоичный файл. |
| Автор: MuForum 8.4.2010, 14:11 | ||||
| Доброго времени суток. Работаю на "Microsoft Visual Studio 2010"; Язык программирования: "C++"; Операционная система: Windows NT+; # Задача: Реализовать самый быстрый способ записи логов на жесткий диск. - На сколько я понимаю, то запись символьных данных в двоичный/бинарный файл будет гораздо быстрее чем в символьный. - Я решил реализовать запись данных в бинарном виде, а уже для просмотра написать отдельно программу для переконвертирования данных. - То есть, необходимо записать массив символов в двоичном виде в двоичный файл. # Запись данных в текстовой файл:
# Запись данных в бинаный файл: (Но это не правильный вариант)
Но проблема в том, размер файла уменьшается лишь на маленький объём + Файл можно открыть и просмотреть через обычный блокнот, а это уже противоречит сути бинарных файлов. P.S. -> Прошу помочь реализовать задачу. |
| Автор: borisbn 8.4.2010, 15:33 | ||
| 1. Буква b во втором параметре fopen'а указывает, нужно ли при записи преобразовывать символ \r в \r\n 2. char * szBuf уже содержит символы, которые записываются в файл. Если хочешь записать в файл переменную типа int, нужно писать
3. зачем переменная m_fHandle заведена в классе, если она используется только внутри функции WriteDataInFile. объяви её там локально. хотя это непринципиально. |
| Автор: Alca 8.4.2010, 15:41 | ||
Попробуй вместо CRT-шных fwrite, fread использовать WinAPI-шные ::WriteFile, ::ReadFile функции (хотя первые юзают вторые). Добавлено @ 15:42 Можно еще поиграться с размером буфера. Добавлено через 3 минуты и 39 секунд + Асинхронные запись/чтение |
| Автор: Peter 9.4.2010, 11:21 |
| Можно позаимствовать опыт у уже созданных библиотек для ведения логов. http://logging.apache.org/log4cxx/index.html, например. Уж там на этой оптимизации собаку съели. |