2014-11-05 3 views
0

У меня есть приложение JAVA на сервере, который создает файлы журналов. У меня есть на другом сервере приложение (VB.NET), которое обрабатывает эти журналы для поиска некоторых строк; если я вручную выберу файл, он будет работать нормально.Мне нужно автоматизировать процесс для открытия файлов, созданных другим приложением

Теперь мне нужно, чтобы второе приложение автоматически открывало каждый новый файл журнала на удаленном сервере каждую минуту.

Так что мне интересно, есть ли способ узнать, когда создается новый файл журнала или какие новые файлы создаются с последней минуты.

Файлы имеют следующий формат: server.log. *. Log, поэтому файлы с разным именем формата следует игнорировать.

Дополнительная информация: На первом сервере есть второе приложение JAVA, которое удаляет журналы старше одного дня.

ответ

1

Вы можете использовать Directory.GetFiles каждую минуту, чтобы получить список всех файлов в папке. Сравните его с предыдущим списком (который вы храните в памяти) и обрабатываете новые файлы.

Другой вариант - контролировать папку для любых изменений. Это можно сделать, используя класс System.IO.FileSystemWatcher. Установив Path и соответствующий NotifyFilter, вы можете увидеть, какие файлы были созданы с событием Created, как только (или почти), как они появляются.

+0

Спасибо за ответ. Я думаю, что первое решение тоже, но проблема, которую я обнаружил, заключается в том, что список файлов в ОЗУ должен иметь предел, если я буду добавлять новые имена файлов, постоянно неизбежно, что ОЗУ будет переполнено. –

+0

Добавляем больше информации о первом сообщении. –

+1

@E_Blue [размер имени файла, ~ 15] * [количество файлов] = [память в баране] Я не думаю, что это будет очень высоким. Если есть шаблон, скажем, дата написана в имени файла, тогда вы можете исключить некоторые старые файлы. Кроме того, при использовании Getfiles вы можете получить последнюю измененную дату для каждого файла. Вы можете исключить все старые даты. –

Смежные вопросы