У меня есть приложение, которое мне было поручено после очистки. Само приложение относительно простое: оно запускает SQL-запрос, использует веб-службу и записывает результаты в файл журнала. Моя работа заключается в том, чтобы архивировать файлы на наш NAS после того, как приложение с ними выполнено. Он блокирует файлы исключительно до тех пор, пока не завершит работу с ними, поэтому добавляет немного сложности. Мне также не разрешено трогать приложение, только логи. В любом случае, мое приложение довольно простое:
- Проверьте, можно ли открыть файл (перехватите IOException), и пометьте его как доступный в bool [], если не сгенерировано исключение.
- Просматривая массив файлов, помеченных как true, считывайте каждую строку файла в StreamReader, используя метод ReadLine. Поскольку приложение иногда икачивает и не завершает работу, я не могу просто использовать IOException, чтобы сказать, завершен ли файл - я должен фактически проанализировать текст.
- Если найден текст, указывающий на завершение, заархивируйте файл, загрузите заархивированный файл на NAS и удалите оригинал.
Мой код работает, он просто очень трудоемкий (каждый файл журнала занимает около 500 МБ). Мои мысли по улучшению включают в себя начало поиска с нижней части файла, а не с верхней части, но StreamReader не поддерживает такой метод. Я не могу использовать метод ReadToEnd, а затем выполнить обратное чтение, потому что это просто вызывает исключение нехватки памяти. Любые мысли о том, как я могу ускорить анализ файла журнала?