我需要找出在Windows上给定文件的默认文件打开器,以便我可以自定义命令参数并使用默认的打开器/查看器打开该文件。
我的真实用例是使用用户的默认媒体播放器打开多个多媒体文件,以便将所有文件添加到用户的播放列表中(对于可以在同一实例中打开多个文件的播放器)。对于操作系统而言,除了Windows之外,我使用Desktop.open(File file)方法(我只不关注除Windows外的其他操作系统的打开多个文件的功能),我找不到任何可以打开多个文件的方法,除了自定义命令参数并使用Runtime类的exec()方法运行它。我使用类似于以下内容的东西:
我正在使用用户指定的路径作为
我还尝试了Rundll32.exe和cmd.exe /start解决方案,但它们在我的使用场景中不起作用。
这个问题不应该与this和this混淆。
我的真实用例是使用用户的默认媒体播放器打开多个多媒体文件,以便将所有文件添加到用户的播放列表中(对于可以在同一实例中打开多个文件的播放器)。对于操作系统而言,除了Windows之外,我使用Desktop.open(File file)方法(我只不关注除Windows外的其他操作系统的打开多个文件的功能),我找不到任何可以打开多个文件的方法,除了自定义命令参数并使用Runtime类的exec()方法运行它。我使用类似于以下内容的东西:
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解决方案,但它们在我的使用场景中不起作用。
这个问题不应该与this和this混淆。