public static void main(String[] args) {
String filePath = "E:\\codes\\work\\product-parent\\logs\\alarm_log_info.log";
try {
RandomAccessFile randomAccessFile = new RandomAccessFile(filePath, "r");
boolean keepWatching = true;
while (keepWatching) {
long filePointer = randomAccessFile.getFilePointer();
String line = randomAccessFile.readLine();
if (line == null) {
// 文件末尾,等待新数据
Thread.sleep(1000); // 可以根据实际情况调整等待时间
} else {
// 处理新增的每一行日志数据
System.out.println(new String(line.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8));
}
// 检查文件是否有新数据
//当前指针是否小于文件的总长度
if (filePointer < randomAccessFile.length()) {
// 文件有新数据,继续读取
} else {
// 文件没有新数据,等待一段时间再继续读取
Thread.sleep(1000); // 可以根据实际情况调整等待时间
}
// 添加退出循环的条件
// if ("exit".equalsIgnoreCase("条件")) {
// keepWatching = false;
// }
}
// 关闭资源
randomAccessFile.close();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}