Откройте текстовый файл в текстовом редакторе по умолчанию ... через Java? - PullRequest
21 голосов
/ 08 июня 2011

OK.Простой вопросВозможно, ответ не такой простой:

У меня есть файл, который я скачал на Java, и я знаю, что это текстовый файл.Можно ли использовать Java для открытия этого текстового файла в любом текстовом редакторе по умолчанию?Он должен работать для всех ОС, в противном случае я бы просто открыл его с помощью Блокнота.

: \ Я думаю, что если нет способа сделать это, я мог бы использовать JOptionPane и показать содержимое текстового файла ...

Ответы [ 3 ]

33 голосов
/ 08 июня 2011

Вы можете сделать это с:

java.awt.Desktop.getDesktop().edit(file);

Ссылка на учебную статью на java.awt.Desktop :

Java ™ Standard Edition, версия 6 сужает разрыв между показателями и интеграция нативных приложений и Java-приложения. Вместе с новая функциональность в системном трее, заставка поддержка экрана и улучшенная печать для JTables, Java SE версии 6 предоставляет Desktop API (java.awt.Desktop) API, который позволяет Java-приложения для взаимодействия с приложения по умолчанию, связанные с определенные типы файлов на хосте платформы.

Он кроссплатформенный, но может не поддерживаться везде. Существует метод, который можно вызвать для проверки доступности API рабочего стола, который называется isDesktopSupported (подробное объяснение см. По ссылке). Я использовал этот API на днях для открытия PDF-файлов в клиенте Swing.

К сожалению, существует известная ошибка, затрагивающая некоторые платформы Windows (XP и 2003) , которая приводит к сбою JVM. Пишите один раз, везде отлаживайте , как обычно. В любом случае, для Windows есть хороший обходной путь , который все еще использует предпочтительное приложение пользователя:

if (System.getProperty("os.name").toLowerCase().contains("windows")) {
  String cmd = "rundll32 url.dll,FileProtocolHandler " + file.getCanonicalPath();
  Runtime.getRuntime().exec(cmd);
} 
else {
  Desktop.getDesktop().edit(file);
}
6 голосов
/ 08 июня 2011
Desktop.getDesktop().edit(File f);
0 голосов
/ 08 июня 2011

Конечно, вы можете настроить текстовый редактор и запустить Runtime.exec. Но я не могу придумать, как определить редактор по умолчанию, особенно системно-независимым образом.

Возможно, ваш лучший вариант - определить, на какой из нескольких самых популярных платформ вы находитесь, а затем найти способ запустить редактор по умолчанию на этой платформе. Например, в Window вы получите редактор по умолчанию, если вы выполните команду «start filename.txt», и я почти уверен, что есть эквивалент Linux.

...