Aplikacja obsługująca plik

0

Wiemy, że np. pliki .txt są otwierane w Notatniku, a .doc w Microsoft Word/dowolnym innym programie biurowym. Działa to dzięki powiązaniom rozszerzeń plików z aplikacjami w rejestrze HKEY_CLASSES_ROOT. Jak jednak osiągnąć taki efekt w Linuksie? Chodzi tu głównie o moją dystrybucję - Ubuntu 12.04 LTS. Istnieje jakiś rodzaj rejestru bądź bazy dowiązań, dzięki którym można ustalić, by dany plik włączał się za pomocą danej aplikacji i automatycznie przesyłał jej jako argument ścieżkę?

Wiem na razie tylko tyle, że nie jest to związane z rozszerzeniami, bo plik, z którego nazwy usunąłem .pdf, nadal otwiera się poprawnie. Wniosek stąd mógłby być taki, że w jakiś sposób informacja na temat obsługującego programu jest w każdym pliku osobno.

Jest to dosyć spory problem, ponieważ o ile pod prawym przyciskiem myszy siedzi opcja wyboru obsługującej aplikacji, o tyle jednak ja piszę w Javie, a nie widzę tam opcji wpisania całej komendy, żeby odpalić program.

0

Ja nie wiem, ale zacznij od Google: "associating files to programs ubuntu"

Zakładam, że albo linux zapisał sobie MIME TYPE tego pliku i obserwuje zmianę jego nazwy, albo linux w jakiś sposób analizuje nagłówki (pierwsze bajty) plików i wg tego rozpoznaje typ pliku (co nie powiedzie się dla części formatów, ale większość z najpopularniejszych jest charakterystyczna na tyle, że można to rozpoznać).

0

Znalazłem /usr/share/applications/defaults.list, które między innymi takie coś:

application/csv=libreoffice-calc.desktop
application/excel=libreoffice-calc.desktop
application/msexcel=libreoffice-calc.desktop
application/msword=libreoffice-writer.desktop

Więc faktycznie, MIME. Problem polega na tym, skąd wzięli te .desktop, bo o ile w tym katalogu znajduje się całkiem sporo aplikacji, żadna z nich takiej nazwy nie ma. Nie ma np. libreoffice-calc.desktop, ale jest zamiast niego LibreOffice Calc.

0

A próbowałeś to:

Desktop.getDesktop().open(new File(nazwaPliku).toURI());

1 użytkowników online, w tym zalogowanych: 0, gości: 1