2009-02-18 18 views
6

Dosyaların bir listesini görüntüliyorum; Java uygulamamda (Eclipse RCP) xls, doc, pdf, odt vb. Kullanıcı dosyayı tıkladığında, Windows Gezgini'nde veya Finder'da olduğu gibi, (uygulamayı düşündüğüne göre) yerel uygulamayı uygun bir şekilde başlatmak istiyorum.Java'dan belirli bir dosya için varsayılan (yerel) uygulama nasıl başlatılır?

Ve buradayken: Finder veya Explorer'ın farklı dosya türleri için kullandığı aynı simgeleri de göstermek güzel olurdu.

Bunun için bir kütüphane veya Eclipse eklentisi var mı?

+1

Bu, bu sorunun bir kopyası gibi görünen: http://stackoverflow.com/questions/325299/cross-platform-way-to-open-a- file-using-java-1-5 –

+1

Gerçekten de, orada Java 1.5 kısıtlamasına dikkat edin: "Java 1.6'nın Desktop API'yi tanıdığını biliyorum, ancak Java 1.5 için bir çözüme ihtiyacım var." – Jonik

cevap

2

Java Activation Framework ("JAF") 'den sonraki gibi geliyor. Bu API, hangi dosyaların olduğunu ve bunlarda neler yapabileceğinizi belirlemenizi sağlar. Veya alternatif olarak Java Desktop Integration Component ("JDIC"). JDIC, ​​herhangi bir şüpheli sorgu dosyası ilişkilendirmesi oluşturmanıza izin verir.

Her iki proje de yarı terkedilmiş bir dümdüz (iç çekirdeğindeki) görünmektedir. Ama bu günlerde Güneş'in kursu için geçerli. Bildiğim diğer bir şey ise, JNI'ye dayanan, Windows NT'ye özgü bir üçüncü parti kitaplığı olan Winpack. Bir sürü başka şey de var.

FileSystemView sınıfını (Java 1.4+) kullanarak get the associated icon yapabilirsiniz.

+0

Hmm, Desktop.open() en basit yol gibi görünüyor. Java 6'yı kullanabiliyorsa, bunun yerine bu lib'leri kullanmanın bazı avantajları var mı? – Jonik

6

Eclipse'in SWT'sinde bir API buldum şimdi bu hile yapmak gibi görünüyor: org.eclipse.swt.program.Program "işletim sisteminin harici program başlatmanın belirli yönlerini keşfetme olanaklarına erişim sağlar."

Belirli bir dosya uzantısı için programı bulmak, programın simgesini almak ve hatta programı başlatmak için yöntemleri vardır.

11

Ne istiyorsun java.awt.Desktop geçerli:

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

Masaüstü iyi çalışmıyor Windows: 'java.io.IOException: Dosya açılamadı:/C: /Documents%20and%20Settings/Administrator/Desktop/test.pdf. Hata iletisi: Uygulama bulunamadı \t sun.awt.windows.WDesktopPeer.ShellExecute (Bilinmeyen Kaynak) ~ [na: 1.6.0_26] ' – Eero

+2

Eero, işlev tasarlandığı şekilde çalışıyor: http://download.oracle.com /javase/6/docs/api/java/awt/Desktop.html#open%28java.io.File%29 open, belirtilen dosyada ilişkilendirilmiş bir uygulama yoksa veya ilgili uygulamanın başlatılamaması durumunda bir IOException atacaktır. Bir IOException atılırsa, kullanmak için bir uygulama sormayı düşünebilirsiniz. –

İlgili konular