Я пытаюсь выяснить, как открыть системный редактор для данного файла.
Скажем, у нас есть файловый менеджер, написанный на Java. Пользователь заходит в папку и видит список файлов. И, например, есть файл Icon.jpg
. Пользователь дважды щелкает имя файла, и файл открывается в предпочитаемом редакторе системы (т.е. Gimp). Главный вопрос - как это сделать?
Мы можем сделать Runtime.getRuntime().exec("something file")
, но таким образом вы должны знать, какая программа предпочтительнее в пользовательской среде. Но как?
Мы также можем сделать Desktop.getDesktop().edit(File file)
, но таким образом мы не можем отслеживать процесс и не можем знать, что этот дочерний процесс закрыт. Другая проблема - функция не работает в Linux (по крайней мере, в Ubuntu 8.10). Существует также Desktop.getDesktop().open(File file)
, но он заставляет открыть средство просмотра файлов вместо системного средства просмотра для этого типа файлов.
Я ищу решение всю неделю, но не нашел подходящего и универсального. Знаете ли вы другие подходы к этому вопросу? Для моего проекта было бы достаточно, если бы он работал на Windows + Linux + Mac.
Спасибо за ваши ответы и советы.
Изменить на 2009-02-08 23: 04
Другое предложение: можно ли вызвать окно «Выбор приложения» в Windows и в Linux, как в Mac с «открытым файлом»? Например, когда вы пытаетесь открыть файл, вас просят выбрать приложение из списка предпочтительных для системы? (что-то вроде «Открыть с помощью ...» в проводнике Windows). Вы знаете?