![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Задача: открыть файл для чтения и читать из него строки, по мере того как др. программа их в него записывает.
Узнать что строка добавлена можно только проверяя периодически с использованием таймера? Или можно, как либо отловить событие добавления строки в него? |
|
#2
|
||||
|
||||
|
|
|
#3
|
|||
|
|||
|
Интересная статья и пример, нет ли ссылки на продолжение (часть 2)?
На первый взгляд мне не подходит по двум моментам: 1) в статье отлавливают изменения файлов находящихся на самом компьютере, а мне желательно так же доступных через сетевое окружение (об этом должны рассказать в части 2). 2) Сказано, что событие изменения размера файла зафиксируется только после его закрытия использующей его программой, что тоже не устроит. |
|
#4
|
|||
|
|||
|
Поутру пришла страшная мысль, о не возможности решения моей задачки.
((( Если др.программа добавляет строки в файл, то увидеть их можно будет только после того, как она сохранит и закроет файл... Есть надежда правда, что она сохраняется после каждой строки... проверю... Ньюанс в том, что та прога сохраняет в файл замеры с оборудования и все это дело доступно мне раза 2-3 в месяц. Пока подскажите команду дающую количество строк в файле? Или только вариант цикл прогонять или кидать в стринглист? Каждый раз ради проверки не хотелось бы такого делать... |
|
#5
|
||||
|
||||
|
Нет команды дающей количество строк в файле.
|
|
#6
|
||||
|
||||
|
Ну а как вы хотели. Допустим у вас ведется некий лог в текстовом файле. Некая программа периодически добавляет в этот файл строки. А вот тут может быть по разному реализовано, она может:
1. открыть файл. 2. добавить строку/строки 3. закрыть файл. 4. повторит п.1-3 в процессе работы В этом случае вы отследите без проблем появление новых строк в логе. А может быть и так: 1. открыть файл. 2. добавить строку/строки 3. повторит п.2 в процессе работы 4. закрыть файл. И вот тогда вы не сможете ничего узнать пока прога не отработает. |
|
#7
|
|||
|
|||
|
Спасибо за ваши комментарии.
Еще подскажите по алгоритму, что будет правильнее для моего случая: вариант (1) 1. открываем файл и считываем строки которые уже есть (обновляя счетчик). Запоминаем размер файла (через функции WinAPI). Файл закрываем. Данные уходят в обработку. 2. в цикле по таймеру скажем раз в 1 секунду проверяем увеличился ли размер файла и если да - открываем файл, считываем след. строку, увеличиваем счетчик, закрываем файл, запоминаем размер. Данные добавляются в обработку. Выход по команде пользователя. вариант (2) - все то же самое, только без проверки и запоминания размера файла. Раз в секунду пробуем открыть файл и считать следующую строку и в случае удачи обновляем счетчик и обрабатываем данные. 2й вариант вроде проще, но открывать(закрывать) для чтения файл придется чаще хотя и не будет проверки размера. Что будет затратнее в плане производительности? |