我正在尝试找出如何打开系统首选编辑器来编辑指定文件。
例如,我们编写了一个Java文件管理器。用户进入文件夹并看到文件列表。例如有一个名为Icon.jpg
的文件。用户双击该文件名,文件就会在系统的首选编辑器(即Gimp)中打开。主要问题是 - 如何做到这一点?
我们可以使用 Runtime.getRuntime().exec("something file")
,但是这种方式需要您知道用户环境中首选的程序。但是怎么知道呢?
我们还可以使用Desktop.getDesktop().edit(File file)
,但是这种方式无法跟踪进程,并且不能知道子进程何时关闭。另一个问题是该函数在Linux上不起作用(至少在Ubuntu 8.10上)。还有Desktop.getDesktop().open(File file)
,但它会强制打开文件查看器,而不是该文件类型的系统查看器。
我已经搜索了一整周,但没有找到合适且通用的解决方案。您是否了解其他方法?对于我的项目,只要它能在Windows + Linux + Mac上运行就足够了。
感谢您的答案和建议。
2009-02-08 23:04的编辑
其他建议:我能在Windows和Linux中强制打开“应用程序选择”窗口,就像Mac中的“打开文件”一样吗?例如,当您尝试打开文件时,会要求您从系统首选列表中选择应用程序吗?(类似于Windows资源管理器中的“使用...”)。您知道吗?