我有例如.pdf
文件(该文件的路径)。如何在SWT应用程序的默认应用程序(可能是Acrobat Reader)中打开此文件(例如,单击按钮)?
答案 0 :(得分:11)
你应该可以使用:
Program.launch(file);
打开文件(使用默认应用程序或创建者)。来自javadoc:
启动与文件或URL关联的操作系统可执行文件(http://或https://)。如果文件是可执行文件,则启动可执行文件。请注意,必须已存在
Display
才能保证此方法返回适当的结果。
请注意Program.launch()
中存在一些特性(或者至少存在这些特性,尽管这些特性可能已在更新版本的运行时中得到修复。)我真的不记得这些错误的具体细节,但是我们会做一些检查以解决一些问题:
如果您使用的是Unix平台,并且指定了绝对路径,则可能无法打开该文件。我们使用/.
作为绝对路径的前缀 - 以便将/tmp/foo
转换为/./tmp/foo
- 尽管我还不记得这个错误的具体细节。
在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()
。