У меня есть процесс (на самом деле веб-сервер), который записывает в файл журнала как POST, поступающий от клиентов.
Затем у меня есть отдельный процесс, который читает файл журнала, например (tail -f), в цикле:
BufferedReader reader = new BufferedReader(new FileReader(logFilePath));
String line = null;
while (true)
{
if ( (line = reader.readLine()) != null )
{
if (firstLine == null) firstLine = line;
processLine(line);
continue;
}
try
{
Thread.sleep(sleepTime);
long ts = System.currentTimeMillis();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
break;
}
}
Это работает очень хорошо в 99% случаев, но иногда строка, которую я читал с помощью BufferedReader.readLine, не является полной строкой. Я полагаю, это потому, что писатель (веб-сервер) еще не закончил сбрасывать все байты строки в файл.
Любые предложения, чтобы исправить или обойти это? Большое спасибо!
while (true) ... break
, вы можете использовать переменную, чтобы проверить, следует ли вам продолжать. - person Viruzzo   schedule 24.02.2012