# Dateien systemunabhängig mit dem Standard-Programm öffnen



## shutdown (8. August 2006)

Hi!

Kann sein, dass diese Frage schon irgendwo beantwortet ist,
meine Suche blieb leider erfolglos.
(Liegt wahrscheinlich auch daran, dass ich nicht genau weiß, wonach ich suchen soll ^^)

Also: 
Ich möchte aus meinem JavaProgramm heraus die unterschiedlichsten Dateitypen aufrufen und ausführen.
Hierbei soll aber auch immer das passende StandardProgramm für diesen Dateityp genommen werden.
D.h. für doc/xls usw unter Windows Word/Excel, unter Linux aber OpenOffice

Da muss es doch sicherlich schon was fertiges geben, was einem eine Referenz auf das StandardProgramm liefert.

Momentan mache ich das Ganze über:
Runtime.getRuntime().exec("cmd /C \"" + pfad + "\"");

Aber Betriebssystemunabhängig ist das ja wohl wirklich nicht.

Besten Dank im Voraus.
Gruß shutdown


----------



## Thomas Darimont (8. August 2006)

Hallo!

Das ginge beispielsweise per SWT:

```
/**
 * 
 */
package de.tutorials;

import org.eclipse.swt.program.Program;

/**
 * @author Thomas.Darimont
 * 
 */
public class SWTProgramStarterExample {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Program program = Program.findProgram(".doc");
        program
                .execute("C:/oraclexe/app/oracle/product/10.2.0/server/doc/License.doc");
    }

}
```

Gruß Tom


----------



## shutdown (9. August 2006)

Danke für die Antwort.

Du sagtest "beispielsweise" - was gibt es denn noch schönes?

Denn so wie ich das mit dem SWT verstanden habe, müssen die zusätzlichen Klassen auch auf allen Clients zusätzlich zur JRE installiert werden - was leider ein kleines Problem sein könnte.
Zudem werden unter Linux die Dateien ja nicht über ihre Endung, sondern über ihren internen Header bestimmt, unter Linux macht eine Überprüfung auf .doc, .xls usw also keinen Sinn.


----------



## Thomas Darimont (9. August 2006)

Hallo!


> Danke für die Antwort.
> 
> Du sagtest "beispielsweise" - was gibt es denn noch schönes?


Ansonsten fällt mir so schnell keine andere Bibliothek ein die sowas Platformübergreifend anbietet. (//Edit: bis auf JDic) Um von den Dateiinhalten (Header) auf den Dateityp schließen zu können kann man das Java Activation Framework verwenden (JAF).
http://java.sun.com/products/javabeans/jaf/downloads/index.html




> Denn so wie ich das mit dem SWT verstanden habe, müssen die zusätzlichen Klassen auch auf allen Clients zusätzlich zur JRE installiert werden - was leider ein kleines Problem sein könnte.


Ja um SWT Benutzen zu können musst du zum einen die SWT Java Bibliothek in den Classpath deiner Anwendung legen und zum anderen die dazugehörige Native Bibliothek in deinem System bekannt machen.



> Zudem werden unter Linux die Dateien ja nicht über ihre Endung, sondern über ihren internen Header bestimmt, unter Linux macht eine Überprüfung auf .doc, .xls usw also keinen Sinn.


...das macht schon Sinn, wenn du eine Datei hast du sowohl auf Linux als auch auf Windows Systemen bearbeitet werden soll (.doc, .xls, .mdb ...)

Gruß Tom


----------



## flashray (10. August 2006)

Hallo shutdown,

da gibt es auch noch das jdic package!

Einfach per "Desktop.open(...);" beliebige Dateien in ihrem Standardprogramm öffnen.

https://jdic.dev.java.net/documentation/Examples.html
https://jdic.dev.java.net/


Vg Erdal


----------

