У меня есть файл журнала, который постоянно пополняется новыми строками данных.Мне нужно получить новые добавленные данные в Java, как только они написаны.На данный момент мое решение:
public static void readNonStop(String filename, boolean goToEnd, FileReadCallback readCallback) {
if(readCallback == null) {
return;
}
try {
BufferedReader br = new BufferedReader(new FileReader(filename));
try {
String line = br.readLine();
int lineNumber = 0;
if(goToEnd) {
while(br.readLine() != null) {}
}
while (true) {
if(line != null) {
readCallback.onRead(lineNumber++, line);
} else {
Thread.sleep(1);
}
line = br.readLine();
}
} finally {
br.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
Но у меня есть ощущение, что должен быть лучший путь.Мне не нравится идея постоянного цикла выполнения с «спящим» внутри, и я предпочитаю какой-то подход, управляемый событиями.
Если я полагаюсь на события FileSystem, чтобы заново открывать файл каждый раз, когда онмодифицируется, это приводит к задержке.
Как правильно сделать это для этой ситуации?
Заранее спасибо!