我正在使用java.awt.Desktop打开文件。我无法控制文件类型程序关联,我想打开一个非默认特定程序的文件。我怎么能这样做?
这是我的代码:
public static void open(File document) throws IOException {
Desktop dt = Desktop.getDesktop();
dt.open(document);
}
答案 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