【发布时间】:2011-01-13 17:59:34
【问题描述】:
我需要找出 Windows 上给定文件的默认文件打开器,以便我可以自定义命令参数并使用默认打开器/查看器打开文件。
我的实际使用场景是使用用户默认的媒体播放器打开多个多媒体文件,以便将所有文件添加到用户的播放列表中(对于可以在同一实例上打开多个文件的播放器)。对于 Windows 以外的操作系统,我使用 Desktop.open(File file) 方法(我根本不关心为 Windows 以外的操作系统打开多个文件功能),除了自定义命令参数并使用 exec 运行它之外,我找不到任何可以打开多个文件的方法Runtime 类的 () 方法。我使用类似这样的东西:
private void playItems2(List<File> fileList, String playerBinary) {
String args = " ";
for (File file : fileList) {
args += "\"" + file.getAbsolutePath() + "\" ";
}
try {
String command = playerBinary + args;
Runtime rt = Runtime.getRuntime();
Process p = rt.exec(command);
} catch (Exception exc) {/*handle exception*/
System.err.println("Run Player Exc:" + exc.getMessage());
}
}
我正在为playerBinary 使用用户指定的路径,我需要自动检测fileList 第一项的默认播放器并将其用作playerBinary。
我还查看了 Rundll32.exe 和 cmd.exe /start 解决方案,但它们不适用于我的使用场景。
【问题讨论】:
-
如果您只在寻找 Windows,那么没有纯 Java 方法可以做到这一点。阅读注册表或使用 3rd 方库。