如何解决在Java中,如果找不到输入文件,如何停止尾部线程
|| 我正在使用Javatail-listener
api来监视来自给定输入日志文件的日志消息。以下是我的代码。
public static void main(String[] args) {
if (listofFiles[i].isFile())
{
files = listofFiles[i].getName();
File pcounter_log = new File(files);
Tailer logMessages = new Tailer(pcounter_log,new FileListener(files,element.getLogPattern()),5000,true);
Thread thread = new Thread(logMessages);
thread.start();
}
public class FileListener extends TailerListenerAdapter {
private final String fileName;
public FileListener(String fileName,ArrayList<String> pattern) {
this.fileName = fileName;
}
public void handle(String line) {
System.out.println(fileName+\"<---->\"+line);
}
}
在上面的代码中,如果在执行过程中未找到任何文件,则如何停止相应的文件尾。
这该怎么做。
解决方法
使用
File.exists()
if(pcounter_log.exists()) {
Tailer logMessages = new Tailer(pcounter_log,new FileListener(files,element.getLogPattern()),5000,true);
Thread thread = new Thread(logMessages);
thread.start();
}
,
...如果在执行过程中未找到任何文件,如何停止相应的页眉。
根本的问题是,当您尝试打开文件时,该文件已“找到”。打开后,Java应用程序无需再次找到它:
在Windows上,操作系统级文件锁定意味着在您的应用程序关闭文件之前,通常无法删除该文件(例如,由另一个应用程序删除)。
在UNIX / Linux上,可以在打开文件时将其删除(实际上是“未链接”),但这不会影响当前打开该文件的应用程序。该应用程序可以继续读取和写入未链接的文件...即使没有其他应用程序可以打开它。
使用Java 6,判断您当前正在读取/写入的文件是否已被“删除”的唯一方法是尝试再次打开它。如果您反复进行,那将很昂贵。在Java 7中,有一些用于处理文件系统事件的新类,这些新类将使您的应用程序“通知”文件已被删除/取消链接。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。