Здравствуйте, форумчане!
Заткнулся с простой задачей и поэтому прошу помощи.
Цель программы в течение нескольких часов принимать данные из компорта, декодировать их и "выжимку" (примерно пару десятков байт в секунду) сохранять в текстовом файле.
Прием и декодирование не являются проблемой, затык в сохранении.
Если просто открыть файл и писать в него, то получается не очень хорошо, при этом неважно пишутся ли эти десятки байт каждую секунду, или накапливаются блоками размером в единицы-десятки кБ.
Если же накапливать данные и идти путем открыть файл - записать текстовые данные - закрыть файл, то получается с каждым новым открытием теряю данные записанные До этого открытия;
если же сделать: открыть файл - запросить размер файла - прочитать текст - добавить к прочитанному новый блок - записать текст- закрыть, то на новой записи объем растет не на величину блока, а на сумму чтения и записи, т.е. первый раз записан блок из 8192 Б, на второй записи объем становится не 16384Б, а 24хххБ, на третьей уже под 57кБ и т.д. Ну и такой подход чреват тем, что к концу придется вычитывать уже мегабайтные файлы и это мне не нравится.
Как поступить красиво, качественно и продуктивно?
Длительная запись данных
-
IvanLis
- guru
- Сообщения: 5463
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Длительная запись данных
Читаете размер файла и устанавливаете курсор в позицию (конец).
Дописываете данные...
Можно хоть Gb записать, т.к. в память ничего из файла не грузится. Только учтите, что в зависимости от FS может использоваться буферизация, именно на уровне FS, по этому файл желательно в конце закрывать
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- professor
- Сообщения: 3404
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 173 раза
- Контактная информация:
Re: Длительная запись данных
можно одним действием: ну и не нужно в цикле перед каждой записью бегать в конец, если в цикле только запись файла
Re: Длительная запись данных
О, спасибо за такую подсказку.
Файл создается единожды при нажатии кнопки "запись" и имя уникальное при каждом нажатии, так что запись действительно всегда в конец будет.
Файл создается единожды при нажатии кнопки "запись" и имя уникальное при каждом нажатии, так что запись действительно всегда в конец будет.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 12 Ответы
- 594 Просмотры
-
Последнее сообщение Sergey Puzanov
-
- 3 Ответы
- 870 Просмотры
-
Последнее сообщение IvanLis
-
- 13 Ответы
- 1224 Просмотры
-
Последнее сообщение Boxa
-
- 0 Ответы
- 502 Просмотры
-
Последнее сообщение Juri
-
- 3 Ответы
- 272 Просмотры
-
Последнее сообщение AndreyDmitriev