java如何为给定文件打开用户系统首选编辑器?
我正试图找出如何打开给定文件的系统首选编辑器
比如说,我们有一个用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资源管理器中)。你知道吗
# 1 楼答案
这不是跨平台的,但在Mac OS X上你可以做到
open(1)
可执行文件使用LaunchServices选择要执行的正确程序,然后使用该程序打开名为filename
的文件# 2 楼答案
查看java.awt.Desktop对象。在您的情况下,您希望调用^{}
如果希望确保给定平台支持此调用,则可以执行以下操作(我尚未测试此代码):
# 3 楼答案
似乎如果你不能使用
java.awt.Desktop
,你必须区分操作系统: 窗口:Linux:
Mac:
嗯。显然,这不是很方便携带
# 4 楼答案
这将在windows中工作