使用 Java 中的外部应用程序编辑文件并写回?

发布于 2024-10-20 19:53:37 字数 269 浏览 8 评论 0原文

当您不知道文件与哪个应用程序关联时,如何从 Java 应用程序编辑文件。另外,因为我使用的是 Java,所以我更喜欢独立于平台的解决方案。外部应用程序关闭后,我想将更改写回文件中。编辑文件是本地临时文件。真实文件保存在服务器、存档或其他任何位置。

我现在可以使用类 Desktop 来打开文件进行编辑。但我如何检测文件是否已关闭。

How do you edit a file from a Java application when you do not know which application the file is associated with. Also, because I'm using Java, I'd prefer a platform independent solution. After the external application was closed I want write the changes in the file back. The edit file was a local temp file. The real file is saved on a server, in an archive or any else.

I now I can use the class Desktop to open a file for edit. But how can I detect if the file was closed.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

马蹄踏│碎落叶 2024-10-27 19:53:37

在这种情况下,外部应用程序未知并且不是从您的 java 应用程序调用的,那么您可以创建一个恶魔线程。我假设您的应用程序知道文件的位置。该恶魔线程可以检查文件上是否有锁以及锁释放时文件的最后更新时间。如果最后更新时间发生变化,您就知道文件已更改。

另一种选择是使用 3rd 方 api,例如 apache 的 FileListener,它在内部也执行相同的操作。

In this scenario where the external application is unknown and is not invoked from you java application then you can create a demon thread. I am assuming that you application knows the location of the file. This demon thread can check for any lock on the file and last updated time of the file when lock is released. If the last updated time changes you know file is changed.

Another option could be using 3rd party api like FileListener from apache which also does kind of the same thing internally.

谜泪 2024-10-27 19:53:37

我不确定您所说的“外部应用程序关闭后,我想将更改写回文件中”是什么意思。

如果您只想等待外部应用程序完成,您可以使用 RunTime :


Process p = Runtime.getRuntime.exec("mycommand");
p.waitFor()

I am not sure what you mean by 'After the external application was closed I want write the changes in the file back.'

If you just want to wait for the external application to finish, you can instead use RunTime :


Process p = Runtime.getRuntime.exec("mycommand");
p.waitFor()

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文