如何在Windows中获取扩展的默认应用程序[Java]

时间:2015-12-02 04:15:14

标签: java windows runtime exec

我正在尝试使用

Runtime.getRuntime().exec("Here_I_am.txt");

但是得到的错误表明Here_I_am.txt不是Win32应用程序。

因此,如果用户只需点击.extension文件,我就应该知道将执行哪个程序 与txt默认情况下一样,它将是Notepad.exe 那么 - 我怎样才能获得这些信息?

P.S。
我确定这个应用程序不会在Linux上使用。

2 个答案:

答案 0 :(得分:1)

您必须通过命令shell调用它:

Runtime.getRuntime().exec("cmd /c Here_I_am.txt");

答案 1 :(得分:1)

您可以使用Desktop.open(File) 1 。如果您需要获取特定文件夹(如主目录),您还可以添加System.getProperty("user.home")。像,

File file = new File(System.getProperty("user.home"), "Here_I_am.txt");
try {
    System.out.printf("File path %s%n", file.getCanonicalPath());   
    Desktop.getDesktop().open(file);
} catch (IOException e) {
    e.printStackTrace();
}

1 具有小优势,它可以在Windows,Linux和Mac上运行。另见How to Integrate with the Desktop Class