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.
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