2012-03-29 17 views

Odpowiedz

10

powinien mieć możliwość korzystania z:

Program.launch(file); 

do otwarcia pliku (za pomocą domyślnej aplikacji lub twórcy). Z modułu javadoc:

Uruchamia plik wykonywalny systemu operacyjnego skojarzony z plikiem lub adresem URL (http: // lub https: //). Jeśli plik jest wykonywalny, uruchamiany jest plik wykonywalny. Zauważ, że Display musi już istnieć, aby zagwarantować, że ta metoda zwróci odpowiedni wynik.

Należy zauważyć, że istnieją pewne osobliwości w Program.launch() (lub przynajmniej nie było, choć mogą one zostały ustalone w nowszych wersjach środowiska wykonawczego.) Naprawdę nie pamiętam specyfiki błędów, ale zrobić kilka testów, aby obejść pewne problemy:

  1. Jeśli jesteś na platformie Unix, a ty określania ścieżki bezwzględnej, może być kłopot otwarcia tego pliku. Poprzedzamy ścieżki bezwzględne wartościami /. - aby /tmp/foo było przetłumaczone na /./tmp/foo - chociaż nie pamiętam dokładnie szczegółów tego błędu.

  2. W systemie Windows, jeśli próbujesz otworzyć ścieżkę UNC - na przykład \\server\bar - musisz zawinąć ciąg w podwójnych cudzysłowach. Na przykład: Program.open("\"\\server\bar\"");

+0

W mojej aplikacji na WinXP i Win7 'Program.launch (" C: \\ dev \\ test.pdf ");' call work good - Acrobat Reader jest otwarty i to wszystko. Dziękuję Ci. – marioosh

+0

@ edward-thomson, w którym pakiecie znaleziono klasę "Program"? –

1

Spróbuj Desktop.open:

Desktop.getDesktop().open(file); 
+2

Osobiście wolałbym rozwiązanie SWT nad wersją AWT. Most SWT <-> AWT jest zwykle niepotrzebny i lepiej go nie używać, chyba że musisz. –

+2

@PranitBauva Dlaczego? – Baz

1

Może to pomoże znaleźć decyzję: wpadliśmy PermGen przestrzeni ucisku na wezwanie Desktop.open() - co jest w AWTpackage - z naszej aplikacji SWT.

Więc wolałbym Program.launch() niż Desktop.open() w środowisku SWT.