2010-02-05 12 views
5

Necesito encontrar un abridor de archivos predeterminado para un archivo dado en Windows para poder personalizar los argumentos del comando y abrir el archivo con el abridor/visor predeterminado.Cómo encontrar el Abridor de archivos predeterminado con Java?

Mi escenario de uso real es abrir múltiples archivos multimedia con el reproductor multimedia predeterminado del usuario para que todos los archivos se agreguen a la lista de reproducción del usuario (para los jugadores que pueden abrir múltiples archivos en la misma intancia). Para el sistema operativo que no sea Windows, uso el método Desktop.open(File file) (simplemente no me refiero a la función de abrir varios archivos para sistemas operativos que no sean Windows), no puedo encontrar ningún método que pueda abrir varios archivos aparte de personalizar los argumentos del comando y ejecutarlo usando exec() método de la clase Runtime. Yo uso somethig similar a esto:

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()); 
    } 
} 

estoy usando ruta especificada usuario para la playerBinary, lo que necesito es la detección automática reproductor predeterminado para el primer artículo de fileList y lo uso como playerBinary.

También he examinado las soluciones Rundll32.exe y cmd.exe /start pero no funcionaron para mi escenario de uso.

Esta pregunta no se debe confundir con this y this.

+0

Si solo está buscando Windows, no hay una forma pura de Java para hacerlo. Lea el registro o use bibliotecas de terceros. – cx0der

Respuesta

1

No se puede hacer solo con Java puro.

En el caso de Windows, debe leer el registro. Supongamos que usted tiene que averiguar asociación de archivos para .mp3

  1. En el registro de Windows, busque el valor predeterminado para HKEY_CLASSES_ROOT\.mp3. Por lo general, su "mp3file".
  2. Ahora busca HKEY_CLASSES_ROOT\mp3file\shell\open\command. El valor en el que hay una cadena que apunta a un ejecutable para abrir archivos .mp3 con .

Ahora bien, esto no puede ser hecho en Java, tiene que elegir lib tercera parte apropiada para hacer esto para usted.

2

¿Ha revisado los componentes JDesktop Integración en http://java.net/projects/jdic/ (ver article)?

También incluye una API de Java para controlar reproductores de música nativos.

El proyecto componentes de integración JDesktop (JDIC) tiene como objetivo hacer Java ™ aplicaciones basadas en la tecnología Java ("Aplicaciones") ciudadanos de primera clase de plataformas de sobremesa actuales sin sacrificar independencia de la plataforma. Su misión es habilitar la integración de escritorio/Java sin problemas .

JDIC proporciona aplicaciones Java con acceso a las funcionalidades y instalaciones proporcionadas por el escritorio nativo . Consiste en una colección de paquetes y herramientas Java.JDIC es compatible con una variedad de características tales como incrustar el navegador nativo, el lanzamiento de las aplicaciones de escritorio, creación de iconos de la bandeja sobre el escritorio, registrar las asociaciones de tipo de archivo, creación de paquetes de instalación JNLP, etc. Muchas nuevas características se aportaron como proyectos de incubadora de la comunidad.

2

¡Utilice este método para llamar al abridor predeterminado y disfrutar!

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