Я использовал следующий код. В Windows вы получите диалоговое окно открытия файла Windows, если ни одна программа не связана с типом файла. Если он не работает в Windows, он возвращается к Desktop.open()
, который работает, если тип файла известен системе.
public static boolean openFile(File file){
try {
if (System.getProperty("os.name").contains("Windows")) {
Runtime.getRuntime().exec(
"rundll32 SHELL32.DLL,ShellExec_RunDLL " + file.getAbsolutePath());
} else if (Desktop.isDesktopSupported()) {
Desktop.getDesktop().open(file);
} else {
return false;
}
return true;
} catch (final Exception e1) {
System.err.println("Error opening file " + file, e1);
return false;
}
}