Вы можете сделать это с:
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);
}