Как узнать по умолчанию открывалка файлов с Java? - PullRequest
5 голосов
/ 06 февраля 2010

Мне нужно найти средство открытия файлов по умолчанию для данного файла в 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 , но они не работали для моего сценария использования.

Этот вопрос не следует путать с этим и этим .

Ответы [ 3 ]

2 голосов
/ 06 февраля 2010

Проверяли ли вы компоненты интеграции JDesktop на http://java.net/projects/jdic/ (см. статья )?

Он также включает в себя Java API для управления нативными музыкальными проигрывателями.

Компоненты интеграции JDesktop (JDIC) проект направлен на создание Java ™ технологические приложения («Java приложения ") первоклассные граждане текущие настольные платформы без жертвуя платформой независимости. это миссия состоит в том, чтобы включить бесшовное интеграция рабочего стола / Java.

JDIC предоставляет приложениям Java доступ к функциональности и услуги, предоставляемые родным рабочий стол. Состоит из коллекции пакетов Java и инструментов. JDIC поддерживает множество функций, таких как встраивание родного браузера, запуск настольных приложений, создание значков в трее на рабочем столе, регистрация ассоциаций типов файлов, создание пакетов установки JNLP и т. д. Многие новые функции представлены как проекты инкубатора от сообщества.

2 голосов
/ 09 января 2011

Используйте этот подход для вызова по умолчанию открывалка и наслаждайтесь!

public void playItems2(...) throws Exception {
    ...
    Process p = Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler c:/mp3/myfile.mp3");
    p.waitFor();
    ...
}
1 голос
/ 06 февраля 2010

Не может делать только с чистой Java.

В случае Windows, вам нужно прочитать реестр. Предположим, вам нужно выяснить связь файлов .mp3

  1. В реестре Windows найдите значение по умолчанию для HKEY_CLASSES_ROOT\.mp3. Обычно его "mp3file».
  2. Теперь ищите HKEY_CLASSES_ROOT\mp3file\shell\open\command. Значение там есть строка указывая на исполняемый файл, чтобы открыть Файлы .mp3 с.

Теперь это не может быть сделано в Java, вам нужно выбрать подходящий сторонний lib, чтобы сделать это для вас.

...