给一个文件,我想提出一种Java编程方式来获取该文件所关联的exe的路径(这是Windows)。我这样做是因为我想自己启动另一个应用程序。我还需要知道文件何时关闭,以便可以更新应用程序中的数据。
当前它通过使用进程来工作,但是我已经对exe的路径进行了硬编码,因此似乎这是缺少的部分。我几乎可以确定我应该在注册表中查找该信息,但是在Computer \ HKEY_CLASSES_ROOT {fileExt}下,我只能看到一个名为ShellEx的文件夹,并且其中有两个奇怪的值,例如{2EC1BE78-0401-44B1-87EF-1A5966D5C5D0 }。对如何进行有任何建议吗?
答案 0 :(得分:0)
在Windows中,可以使用命令行命令SELECT
DL.DoesItMatch([FULL_NAME_1],[FULL_NAME_2]) AS [name_match],
...
FROM
TABLE_1
和ftype
对此进行检索,如以下示例所示:
assoc
因此,问题在于如何使用Java启动命令行命令并读取其结果。应该有很多关于此的帖子(一个简单的Google引导我进入this URL)。
答案 1 :(得分:0)
为什么不使用Desktop.open()在关联的本机应用程序中打开文件,例如要打开的文件为c:\ somefile.png,在关联的应用程序中打开它很容易
Desktop desk = Desktop.getDesktop();
desk.open(new File("c:/somefile.png"));
对于其他部分,您可以使用Java Watch服务API来确定文件在打开时是否发生了更改。
https://www.baeldung.com/java-nio2-watchservice
https://howtodoinjava.com/java8/java-8-watchservice-api-tutorial/
作为替代方案,Apache Commons IO中也有文件监视器 https://commons.apache.org/proper/commons-io/
可以在此处找到两者的一个小比较: https://www.baeldung.com/java-watchservice-vs-apache-commons-io-monitor-library