2010-02-05 9 views
5

Ho bisogno di trovare l'apri file predefinito per un dato file su Windows in modo che possa personalizzare gli argomenti del comando e aprire il file con il programma di apertura/visualizzazione predefinito.Come trovare l'apri file predefinito con Java?

Il mio reale scenario di utilizzo è l'apertura di più file multimediali con il lettore multimediale predefinito dell'utente in modo che tutti i file vengano aggiunti alla playlist dell'utente (Per i giocatori che possono aprire più file sullo stesso livello). Per il sistema operativo diverso da Windows, utilizzo il metodo Desktop.open(File file) (semplicemente non mi interessa l'apertura di più funzionalità di file per sistemi operativi diversi da Windows), non riesco a trovare alcun metodo in cui sia possibile aprire più file diversi dalla personalizzazione degli argomenti del comando ed eseguirlo utilizzando exec() metodo della classe Runtime. Io uso somethig simile a questo:

private void playItems2(List<File> fileList, String playerBinary) { 
    String args = " "; 
    for (File file : fileList) { 
     args += "\"" + file.getAbsolutePath() + "\" "; 
    } 

    try { 
     String command = playerBinary + args; 
     Runtime rt = Runtime.getRuntime(); 
     Process p = rt.exec(command); 
    } catch (Exception exc) {/*handle exception*/ 
     System.err.println("Run Player Exc:" + exc.getMessage()); 
    } 
} 

Sto usando utente specificato percorso per il playerBinary, che cosa devo rileva automaticamente lettore predefinito per la prima voce di fileList e usarlo come playerBinary.

Ho anche esaminato le soluzioni Rundll32.exe e cmd.exe /start ma non hanno funzionato per il mio scenario di utilizzo.

Questa domanda non deve essere confusa con this e this.

+0

Se si sta cercando solo Windows, non esiste un puro modo Java per farlo. Leggi il registro o usa le librerie di terze parti. – cx0der

risposta

1

Non può fare da solo Java.

In caso di Windows, è necessario leggere il registro. Si supponga di dover scoprire un'associazione di file per .mp3

  1. nel registro di Windows, cercare il valore predefinito per HKEY_CLASSES_ROOT\.mp3. Di solito la sua "mp3file".
  2. Ora cerca HKEY_CLASSES_ROOT\mp3file\shell\open\command. Il valore in là è una stringa punta a un file eseguibile per aprire file .mp3 con.

Ora questo cant essere fatto in Java, è necessario scegliere appropriata lib 3a parte per fare questo per voi.

2

avete controllato i componenti JDesktop integrazione a http://java.net/projects/jdic/ (vedi article)?

Include anche un'API Java per controllare i lettori musicali nativi.

Il progetto JDesktop componenti di integrazione (JDIC) mira a rendere ™ applicazioni basate sulla tecnologia Java ("Java Applicazioni") cittadini di prima classe di piattaforme desktop attuali senza sacrificare l'indipendenza dalla piattaforma. La sua missione è di abilitare l'integrazione desktop/Java senza interruzioni .

JDIC fornisce applicazioni Java con accesso a funzionalità e agevolazioni previste dal desktop native. Consiste in una collezione di pacchetti e strumenti Java.JDIC supporta una varietà di caratteristiche come incorporare il browser nativo, lancio delle applicazioni desktop, creando icone della barra sul desktop, registrazione associazioni di tipo file, la creazione di pacchetti di installazione JNLP, ecc Molte nuove funzionalità sono contribuito come progetti di incubatori dalla comunità.

2

Utilizzare questo approccio per chiamare l'apertura di default e divertirsi!

public void playItems2(...) throws Exception { 
    ... 
    Process p = Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler c:/mp3/myfile.mp3"); 
    p.waitFor(); 
    ... 
} 
Problemi correlati