Использование файловой ассоциации в приложении Java - PullRequest
3 голосов
/ 11 января 2010

Я нахожусь в процессе написания кроссплатформенного приложения на основе Swing, в котором я хочу использовать сопоставление файлов, зарегистрированное в ОС.

Итак, я дошел до того, что я могу щелкнуть файл, и мое приложение загрузится, но мне нужно знать, как я могу узнать, где находится приложение, которое запустило его, и затем запросить содержимое.

Есть ли что-то еще, что я должен сделать с регистрацией ассоциации файлов? Или Java может сделать это для меня?

Ответы [ 5 ]

5 голосов
/ 11 января 2010

Я не уверен, но я ожидаю, что имя файла, который вы обрабатываете по щелчку файла, в конце концов окажется в аргументах вашего main() метода.Вы пробовали / проверяли это?

2 голосов
/ 11 января 2010

Если это в Windows (вы не указали):

В реестре, где бы вы ни указали путь приложения для зарегистрированного в нем типа файла, добавьте "%1". Это специальный параметр, который Windows будет заполнять путем к файлу, по которому щелкнули. Таким образом, ваша запись в реестре будет выглядеть примерно так: c:\path\to\app.exe "%1"

1 голос
/ 29 апреля 2010

В Windows есть две команды, которые могут помочь, assoc и ftype, так что вам не нужно делать грязную стирку для манипулирования реестром. Вызовите команды, используя, скажем, java.lang.Process. http://www.rgagnon.com/javadetails/java-0592.html

1 голос
/ 11 января 2010

Расширения могут быть связаны с приложениями, вы можете настроить ключи реестра во время установки. Какие ключи вам нужны, документировано здесь:

http://support.microsoft.com/?scid=kb%3Ben-us%3B185453&x=6&y=11

Из Java вы не можете получить прямой доступ к реестру Windows. Используя Runtime, вы можете сделать что-то подобное http://www.rgagnon.com/javadetails/java-0480.html

1 голос
/ 11 января 2010

Один из способов сделать это состоит в том, чтобы файловая ассоциация запустила ваше приложение Java через скрипт или пакетный файл, и чтобы пакетный файл передавал путь к файлу в качестве аргумента командной строки, переменной среды или свойства Java.

...