使用javadesktop.open(文件f)并知道应用程序已经完成

使用javadesktop.open(文件f)并知道应用程序已经完成,java,class,process,desktop,Java,Class,Process,Desktop,使用Java Desktop.open(File f)在用户桌面上打开与默认应用程序关联的文件,似乎不会提供有关用户何时完成此文件的信息。如何才能知道用户何时真正完成了这个子进程?是否有比每隔一段时间检查一次文件大小更优雅的方法—只告诉我文件已保存。我认为您不能使用Desktop.open检查它。我建议在引入Desktop类之前使用该方法。然后你就可以跟随流程,并在流程结束时触发 Runtime rt = Runtime.getRuntime(); Process proc = rt.exe

使用Java Desktop.open(File f)在用户桌面上打开与默认应用程序关联的文件,似乎不会提供有关用户何时完成此文件的信息。如何才能知道用户何时真正完成了这个子进程?是否有比每隔一段时间检查一次文件大小更优雅的方法—只告诉我文件已保存。

我认为您不能使用Desktop.open检查它。我建议在引入Desktop类之前使用该方法。然后你就可以跟随流程,并在流程结束时触发

 Runtime rt = Runtime.getRuntime();
 Process proc = rt.exec(the app and file here);

注意:在这个答案之后,GETah发布了一个更好的建议(我投了赞成票)。我也会留下这个答案,在某些情况下,这可能是足够的,而且很容易实现。

如果您想查看文件/目录中其他进程所做的更改,则此选项适用于您。此API将帮助您监视文件/目录,并在另一个进程触及该文件/目录时收到通知。

检查文件大小甚至可能不会告诉您该文件已保存,因为即使内容已更改,大小也可能相等。@Thomas您的确是对的。请检查我下面的答案,了解如何在Java中实现这一点。哇,非常酷的东西,我不知道这个api!性能如何(内存和处理器使用)?不管怎样,我对这个建议投了赞成票。顺便问一句:为什么这个问题要公开一个多月,在我回答后的5分钟内,你提出了这个建议?:)@米歇尔,谢谢你的投票。我刚看到这个问题,一个月前我一定错过了:p