2016-12-15 11 views
0

Я знаю, что мы можем открыть редактирования для файла изображения e.t.c с помощью Java, а вот мой пример:Java - Как отредактировать файл с помощью конкретной программы?

File file = new File("c:\\Users\\Aleksa\\Desktop\\Logo.png"); 
Desktop.getDesktop().edit(file); 

Теперь я хочу знать, как я могу открыть определенное приложение для редактирования этого файла. Например, Java проверяет, есть ли у меня «Abdobe PhotoShop», и если да, откроет файл в Photo Shop, а не в краске, как и он. И как открыть специальный редактор для редактирования файла?

-Спасибо за помощь.

+0

Это зависит от приложения, но * обычно * вы запускаете исполняемый файл и указываете файл для открытия в качестве аргумента, например. '" C: \ Program Files (x86) \ Notepad ++ \ notepad ++. Exe "" C: \ Users \ Salmeh \ Desktop \ hello.txt "'. Что касается того, как запускать программу с Java, в Интернете есть множество примеров. – Andreas

+0

Хорошо, спасибо за помощь. –

ответ

1

из https://docs.oracle.com/javase/tutorial/uiswing/misc/desktop.html:

«API-интерфейс Desktop использует ассоциацию файлов операционной системы хоста для запуска приложений, связанные с определенными типами файлов, например, если OpenDocument текст (ODT) расширения файлов, связанные с Writer OpenOffice. приложение Java может запускать OpenOffice Writer для открытия, редактирования или даже печати файлов с этой ассоциацией. В зависимости от хост-системы разные приложения могут быть связаны с различными действиями. Например, если конкретный файл не может быть напечатан, сначала проверьте имеет ли его расширение ассоциацию печати в данной операционной системе ».

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

TL; DR: если вы хотите открыть приложение ОС по умолчанию, используйте Desktop.open(). Если вы хотите открыть с помощью специального редактора, вызовите редактор явно, например, с помощью Runtime.exec().

+0

Runtime.exec был заменен ProcessBuilder много лет назад. – VGR

 Смежные вопросы

  • Нет связанных вопросов^_^