如何从 Java 启动给定文件的默认(本机)应用程序?
我正在显示文件列表; 即 xls、doc、pdf、odt 等,在我的 Java 应用程序 (Eclipse RCP) 中。 当用户单击该文件时,我想启动适当的(根据操作系统的想法)本机应用程序,就像在 Windows 资源管理器或 Finder 中发生的那样。
当我在这里时:最好也显示 Finder 或资源管理器用于不同文件类型的相同图标。
有没有相关的库或 Eclipse 插件?
I am displaying a list of files; i.e. xls, doc, pdf, odt etc., in my Java application (Eclipse RCP). When the user clicks on the file, I want to launch the appropriate (according to what the OS thinks) native application, just like it happens in Windows Explorer or the Finder.
And while I am here: It would be nice to also display the same icons that Finder or Explorer use for the different file types.
Is there a library or Eclipse plugin for this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你想要的是 java.awt.Desktop :
What you want is java.awt.Desktop:
我现在在 Eclipse 的 SWT 中找到了一个 API,它似乎可以解决问题:
org.eclipse.swt.program.Program “提供对用于发现外部程序启动的操作系统特定方面的设施的访问。”
它有方法来查找给定文件扩展名的程序、获取程序的图标,甚至启动程序。
I have found an API in Eclipse's SWT now that seems to do the trick:
org.eclipse.swt.program.Program "provides access to facilities for discovering operating system specific aspects of external program launching."
It has methods to find the program for a given file extension, get the program's icon, and even launch the program.
听起来您正在寻找 Java 激活框架 (“JAF ”)。 通过此 API,您可以确定文件是什么以及可以对它们执行哪些操作。 或者 Java 桌面集成组件(“JDIC”)。 JDIC 允许您创建并且毫无疑问地查询文件关联。
然而,这两个项目似乎都处于半废弃状态(叹气)。 但这对于Sun 如今来说已经是司空见惯的事了。 我唯一知道的另一件事是一些基于 JNI 的 Windows 特定第三方库,称为 Winpack。 它还可以做很多其他事情。
您可以获取关联的图标使用 FileSystemView 类 (Java 1.4+)。
Sounds like you're after the Java Activation Framework ("JAF"). This API lets you determine what files are and what actions you can do on them. Or alternatively the Java Desktop Integration Component ("JDIC"). JDIC allows you to create and no doubt query file associations.
Both projects seem to be in a semi-abandoned state howeer (sigh). But that's par for the course for Sun these days. Only other thing I know of is some Windows specific third party library that's based on JNI called Winpack. It does a bunch of other things too.
You can get the associated icon using the FileSystemView class (Java 1.4+).