gpt4 book ai didi

java - 如何等待文件创建

转载 作者:行者123 更新时间:2023-11-29 07:43:06 26 4
gpt4 key购买 nike

我的情况如下:我有一个 Java 程序,它启动了一个 perl 脚本。Perl 脚本正在生成一个文件,Java 应该在该文件上继续工作。到目前为止,我已经设置了一个

Thread.sleep(3000);

让Java等待文件完成。我一直在寻找一种更优雅的方式让 Java 检查文件是否存在然后继续。我最后一次尝试是

Boolean waitforfile = true;  
while(waitforfile){
File f = new File(pathtofile);
if(f.exists() && !f.isDirectory()) { waitforfile=false; }
}

但是那个会让我陷入一个永无止境的循环。还有其他办法吗?

更新:根据建议,尝试过,处理,WaitFor();在

    public static String syscall(String call){
String out = "";
try {
String line;
Process p = Runtime.getRuntime().exec(call);
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
out=out+"\n"+line;
}
input.close();
p.waitFor();
} catch (Exception e) {
System.out.println(e);
}

return out;
}

这个没有等待我的 perl 进程关闭。

最佳答案

更好的方法是将文件写入一个临时文件名,如myscript.pl.tmp,并在完成后重命名。由于重命名是原子的,您不会看到它处于未完成状态。

顺便说一句,您可以使用 WatchService 在文件出现时收到通知。 Watching a Directory for Changes

关于java - 如何等待文件创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28233228/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com