如何在SWT中使用默认应用程序打开文件?

时间:2012-03-29 23:31:43

标签: java swt

我有例如.pdf文件(该文件的路径)。如何在SWT应用程序的默认应用程序(可能是Acrobat Reader)中打开此文件(例如,单击按钮)?

3 个答案:

答案 0 :(得分:11)

你应该可以使用:

Program.launch(file);

打开文件(使用默认应用程序或创建者)。来自javadoc:

  

启动与文件或URL关联的操作系统可执行文件(http://或https://)。如果文件是可执行文件,则启动可执行文件。请注意,必须已存在Display才能保证此方法返回适当的结果。

请注意Program.launch()中存在一些特性(或者至少存在这些特性,尽管这些特性可能已在更新版本的运行时中得到修复。)我真的不记得这些错误的具体细节,但是我们会做一些检查以解决一些问题:

  1. 如果您使用的是Unix平台,并且指定了绝对路径,则可能无法打开该文件。我们使用/.作为绝对路径的前缀 - 以便将/tmp/foo转换为/./tmp/foo - 尽管我还不记得这个错误的具体细节。

    < / LI>
  2. 在Windows上,如果您尝试打开UNC路径 - 例如\\server\bar - 您需要将该字符串换成双引号。例如:Program.open("\"\\server\bar\"");

答案 1 :(得分:1)

尝试使用Desktop.open:

Desktop.getDesktop().open(file);

答案 2 :(得分:1)

也许这有助于找到一个决定:我们在调用Desktop.open()时遇到了PermGen空间问题 - 这是在AWTpackage中 - 来自我们的SWT应用程序。

所以我希望在SWT环境中Program.launch()超过Desktop.open()