如何在Desktop中使用特定程序打开文件

时间:2016-10-08 06:47:06

标签: java

我正在使用java.awt.Desktop打开文件。我无法控制文件类型程序关联,我想打开一个非默认特定程序的文件。我怎么能这样做?

这是我的代码:

 public static void open(File document) throws IOException {
        Desktop dt = Desktop.getDesktop();
        dt.open(document);
    }

2 个答案:

答案 0 :(得分:1)

我不认为Desktop类支持这一点;没有用于查询文件关联的API。

您希望用户从列表中进行选择吗?如果是这样,我认为你必须按平台进行。对于Windows,您可以参考以下问题: Get Windows files associations via Java

或者您是否已经考虑过具体计划?如果是这样,那么您可以使用Runtime.exec()直接启动它: https://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html

答案 1 :(得分:1)

如果你知道要执行的程序的名称和位置,你可以直接运行它,并提供文件名作为参数打开(在空格之后):

try {
    Runtime runTime = Runtime.getRuntime();
    // Don't forget that '\' needs to be escaped with another '\'
    // Also, there may be spaces in the name(s). Use quotes (with their own escapes!)
    Process process = runTime.exec("\"C:\\Windows\\system32\\notepad.exe\"" +
                                   " " +    // Separate argument with space
                                   "\""+document.getAbsolutePath()+"\"");
} // try
catch (IOException e) {
    e.printStackTrace();
} // catch