TransWikia.com

Открыть файл при помощи Java-программы, и получить Path этого файла

Stack Overflow на русском Asked by Agzam4 on February 20, 2021

Что бы вопрос был понятнее, приведу аналогию:

Когда тыкаешь по txt файлу открывается блокнот с содержимым файла, если конечно не другое приложение стоит, а я как раз вместо блокнота хочу подставить свою скомпилированную* программу

*Лучше конечно с jar, но можно и с exe


Цель такова:

Сделать так, что бы при нажатии по файлу с определенным расширением (например txt), открывался JFrame с текстом из этого файла (по которому кликнули)

Создавать JFrame и читать файли по Path, я умею, но как узнать path этого файла?


Если вообще нет вариантов, то можно вот есть с bat файлом (Спасибо Akina):

Создаём где-нибудь файл, называем его myfile.myext.
Создаём где-нибудь bat-файл, называем его mybatch.bat.
Редактируем bat-файл, пишем в него:

start javaw -jar Java_Program.jar %1

ПКМ по файлу >> Открыть с помощью >> Другие приложения >> bat-файл с программой

Path будет поступать в String[] у метода main
Пример кода для проверки:

public static void main(String[] args) {
    for (String string : args) {
        JOptionPane.showMessageDialog(null, string);
    }
    JOptionPane.showMessageDialog(null, "End");
}

One Answer

По шагам.

  1. Создаём где-нибудь файл, называем его myfile.myext.
  2. Создаём где-нибудь батч-файл, называем его mybatch.bat.
  3. Редактируем батч-файл, пишем в него:
@echo Batch-file name: %0
@echo Filename: %1
pause
  1. Кликаем правым батоном по файлу, Открыть с помощью - Другие приложения - тычем в батч-файл. Открывается окно CMD, убеждаемся, что в нём отображается полное имя батч-файла и полное имя нашего файла. Закрываем окно.
  2. Двойной клик по файлу, открывается окно CMD, убеждаемся, что в нём отображается полное имя батч-файла и полное имя нашего файла. Закрываем окно.
  3. Идём разбираться с передачей параметров в Java-приложение.

Для справки - в реестре создаются два раздела: HKCR.myext и HKCRmyext_auto_file. Можете их изучить... и потом удалить - за явной ненадобностью.

Correct answer by Akina on February 20, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP