Я должен узнать новичка файла по умолчанию для данного файла в Windows так, чтобы я мог настроить аргументы команды и открыть файл с новичком/средством просмотра по умолчанию.
Мой реальный сценарий использования открывает несколько мультимедийных файлов с медиаплеером пользователя по умолчанию так, чтобы все файлы были добавлены к плей-листу пользователя (Для плееров, которые могут открыть несколько файлов на том же экземпляре). Для операционной системы кроме использования Windows I Desktop.open(File file)
метод (я просто не касаюсь открытия нескольких функции файлов OSs кроме Windows), я не могу найти метод, который я могу открыть несколько файлов кроме настройки аргументов команды и выполнения его с помощью должностного лица () метод Класса среды выполнения. Я использую somethig подобный этому:
private void playItems2(List 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 / запускают решения, но они не работали на мой сценарий использования.
Невозможно сделать только с чистой Java.
В случае Windows, вам нужно прочитать реестр. Предположим, вам нужно узнать ассоциацию файлов для .mp3
HKEY_CLASSES_ROOT\.mp3
. Обычно его
"mp3file
". HKEY_CLASSES_ROOT\mp3file\shell\open\command
.
Значение там - строка
указывающий на открываемый исполняемый файл
mp3-файлы с. Теперь это не может быть сделано на Java, вам нужно выбрать подходящую третью сторону lib, чтобы сделать это за вас.