Подтвердить что ты не робот

Открыть текстовый файл в текстовом редакторе по умолчанию... через Java?

OK. Простой вопрос. Может быть, не так просто ответить, хотя:

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

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

4b9b3361

Ответ 1

Вы можете сделать это с помощью

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

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

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

Это кросс-платформенный, но не поддерживается везде. Существует метод, который вы можете вызвать, чтобы проверить, доступен ли Desktop 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);
}

Ответ 2

Desktop.getDesktop().edit(File f);

Ответ 3

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

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