微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Java中,如果找不到输入文件,如何停止尾部线程

如何解决在Java中,如果找不到输入文件,如何停止尾部线程

|| 我正在使用Java
tail-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 举报,一经查实,本站将立刻删除。