views:

1421

answers:

4

How do you open a file from a java application when you do not know which application the file is associated with. Also, because I'm using Java, I'd prefer a platform independent solution.

+2  A: 

You could hack something together with a bat file on Windows and equivalent on Unix, but that wouldn't be that fun.

I think your best bet would be the JDesktop Integration Components (JDIC). In particular, the Desktop class has exactly the method you're looking for.

EDIT: Apparently, I'm behind the times because this has been integrated into Java 1.6. In any case, if you're working in an earlier Java, it may still be useful.

Dave Ray
The links provided are broken. You need to fix both. Thanks.
Adeel Ansari
+9  A: 

With JDK1.6, the java.awt.Desktop class can be useful.

public static void open(File document) throws IOException {
    Desktop dt = Desktop.getDesktop();
    dt.open(document);
}

ref : http://java.sun.com/javase/6/docs/api/java/awt/Desktop.html

RealHowTo
A: 

Open the file to read from within the application? Or open the application that is responsible for that file type?

skiphoppy
+2  A: 
File file
Desktop.getDesktop().open( file );

Since Java 1.6

Previous to that you could check this question

Sumary

It would look something like this:

Runtime.getRuntime().exec( getCommand( file ) );

public String getCommand( String file ){ 
    // Depending on the platform could be
    //String.format("gnome-open %s", fileName)
    //String.format("open %s", fileName)
    //String.format("cmd /c start %s", fileName)
    // etc. 
}
OscarRyz
I'd like to add "xdg-open" (http://portland.freedesktop.org/xdg-utils-1.0/xdg-open.html) for a more integrated Linux-command that isn't available everywhere.
Joachim Sauer