Java 自动关闭jar文件的执行或对事件自动运行jar文件

Java 自动关闭jar文件的执行或对事件自动运行jar文件,java,jar,raspberry-pi,autorun,auto-close,Java,Jar,Raspberry Pi,Autorun,Auto Close,我已经实现了一个应用程序,它可以处理一些xml输入文件,并因此编写更多的xml文件 我得把这个罐子放在树莓皮上 我使用PuTTY或WinSCP将输入文件从pc传输到Raspberry Pi 我有一个方法,可以从一个目录中读取。我将.xml文件的所有名称指定为filename.xml,并将它们添加到一个列表中。然后调用处理列表中位置0上的inputFile的其他方法 inputFile是由“路径+文件名”表示的文件 从列表中的位置0处理inputFile后,我删除inputFile,然后从列表中删

我已经实现了一个应用程序,它可以处理一些xml输入文件,并因此编写更多的xml文件

我得把这个罐子放在树莓皮上

我使用PuTTY或WinSCP将输入文件从pc传输到Raspberry Pi

我有一个方法,可以从一个目录中读取。我将.xml文件的所有名称指定为filename.xml,并将它们添加到一个列表中。然后调用处理列表中位置0上的inputFile的其他方法

inputFile是由“路径+文件名”表示的文件

从列表中的位置0处理inputFile后,我删除inputFile,然后从列表中删除名称

我的应用程序应该永久运行,因为输入文件可以随时发送。 第一个问题是:我不知道如何使我的jar永久运行。

另一个问题是当没有更多的文件可读取时,因为如果jar仍在运行,将抛出一个错误,因为没有更多的文件。


我想只有在我在Raspberry Pi上设置的目录中有xml文件的情况下,我才需要运行我的应用程序,而且我不知道该怎么做。。。只有当xml文件被发送到raspberry pi时,才会有一个触发器或其他东西使我的应用程序运行。

假设传入的文件在变量
文件名中,路径
路径
。
我们可以等待此文件存在,如下所示:

File f = new File(path+filename);
while(true){ //infinite loop for infinite executing
    while(!f.exists()){
        Thread.sleep(10000); //long time is ok (10 seconds)
    }
    readFile(f); //your code to read file
    //I recommend to delete or rename file to let f vaiable
}
要将其用于文件夹,可以使用以下命令:

File f = new File(path);
while(true){ //infinite loop for infinite executing
    while(f.listFiles().length==2){ //contains only . and .. "files"
        Thread.sleep(10000); //long time is ok (10 seconds)
    }
    readFolder(f.listFiles()); //your code to read folder (array of files)
}
还有一种更好的方法,可以发现文件夹中添加了新文件:

File f = new File(path);
int lastCount=2; //or =f.listFiles().length to skip change at start
while(true){ //infinite loop for infinite executing
    while(f.listFiles().length==lastCount){
        Thread.sleep(10000); //long time is ok (10 seconds)
    }
    readFolder(f.listFiles()); //your code to read folder (array of files)
    lastCount=f.listFiles().length; //setting we have just know how many files are there
}
未经测试,将适用于所有类型的文件,而不仅仅是
.xml
。过滤器不应该引起太多问题