Ahora estoy usando java de Escritorio de la API para manipular el explorador de archivos.
Yo sé cómo abrir el explorador de archivos, pero no sé cómo abrirlo y poner de relieve el archivo especificado.

Como estamos usando el Chrome, después de la descarga de archivos, se puede elegir la opción «mostrar en carpeta» para abrir el explorador de archivos y resalte el archivo descargado.

Cómo utilizar el Escritorio de java API para hacerlo?
O hay alguna otra API en java se puede realizar esta acción?

  • He leído todas las respuestas y comentarios de mi pregunta, pero no hay satisfecho respuestas. Yo voto en algunas de las respuestas que cerca de mi objetivo, aunque esas no son las soluciones completas. Así que yo no acepte cualquier respuesta para evitar que otros incomprendidos. Espero que alguien algún día me puede dar una solución completa de esas preguntas, y por supuesto, voy a aceptar. Por último, invito a usted a unirse a mi discusiones. Tal vez usted es el único que puede resolver mis dudas. Gracias por tu comentario.
InformationsquelleAutor Charles Wu | 2011-09-09

7 Comentarios

  1. 41

    Uso: Runtime.getRuntime().exec("explorer.exe /select," + path);

    Esto también funciona si hay un espacio en el PATH.

    • Hola @de Piedra, el código funciona de verdad. Pero el quot debe ser modificado. Runtime.getRuntime().exec("explorer.exe /select, path")
    • Que en realidad son ambos correctos. @Piedra se refiere a la variable path que contiene la ruta de acceso completa, mientras que el suyo es simplemente la Cadena «ruta de acceso» (que no es válido en todos(?) sistema, pero compila).
    • tengo que resaltar varios archivos.. entonces ¿cómo puedo hacerlo? tiene usted alguna idea?
    • no por ahora no tengo ninguna idea de cómo lograr esto.
  2. 29

    EDICIÓN:

    De java 9 ahora hay un método en el Escritorio de la API para seleccionar el archivo

    desktop.browseFileDirectory(<file>)

    EDICIÓN:

    No es posible marcar un archivo específico con el Escritorio de java API.

    RESPUESTA A LA PREGUNTA ORIGINAL:

    El Escritorio de la API te permite hacer esto mediante el uso de este fragmento,

    File file = new File ("c:\<directory>");
    Desktop desktop = Desktop.getDesktop();
    desktop.open(file);

    La documentación para el código de arriba es en estos enlaces,
    http://docs.oracle.com/javase/10/docs/api/java/awt/Desktop.html y
    http://docs.oracle.com/javase/10/docs/api/java/io/File.html

    En un equipo de Windows se abrirá el explorador de archivos predeterminado y en otros sistemas se abrirá su defecto exploradores respectivamente.

    Alternativamente, usted puede utilizar la nueva Ruta de java API para construir la ruta deseada y, a continuación, invocar el método que devuelve el Archivo correspondiente objeto.

    Por razones de brevedad me excluido el código de comprobación para asegurarse de que el Escritorio y Archivo de los objetos existen.

    • Cuando hice la pregunta, yo uso el jdk 6. Con el tiempo va por, la nueva versión de java es de gran alcance para los desarrolladores. De cualquier manera, gracias por responder a mi pregunta.
    • Su bienvenida. @krok tiene una buena respuesta, pero pensé que me gustaría añadir mis 2 centavos de dólar en el espíritu de independencia de la plataforma.
    • Este no es compatible con Windows 10 o Linux (al menos CentOS 7 + Gnome).
    • No funciona con Debian Linux tampoco. ¿Qué no es el trabajo? De todos modos, aquí es un ticket que describe de este modo: bugs.openjdk.java.net/browse/JDK-8233994
  3. 27

    El Escritorio de la API no es compatible con esta. Vas a tener que usar ProcessBuilder (o, alternativamente,tiempo de ejecución.exec()) para la ejecución de explorer.exe explícitamente con las opciones que desee. Esto sólo funcionará en windows, aunque, si desea ejecutar esto en otro sistema operativo, usted tendrá que usar la API de Escritorio de todos modos.

    Process p = new ProcessBuilder("explorer.exe", "/select,C:\\directory\\selectedFile").start();
    • este abrir mi carpeta de inicio cuando el camino tiene un espacio en blanco 🙁
    • usted tendrá que escapar de los espacios en sus opciones de línea de comandos
  4. 3

    Podemos abrir una ruta específica, desde la línea de comandos con :

    start C:/ProgramData

    Hay dos maneras en java se puede utilizar para abrir el explorador de windows con la ruta de acceso específica:

    1. Proceso para el uso de la clase(como ya se ha contestado), pero con el comando de inicio de

      try {
          Process builder = Runtime.getRuntime().exec("cmd /c start C:/ProgramData");
      } catch (IOException e) {
          e.printStackTrace();
      }
    2. Uso de Escritorio de la clase

      try {
          Desktop.getDesktop().open(new File("C:/ProgramData"));
      } catch (IOException e) {
          e.printStackTrace();
      }
    • Me gustó esta solución porque yo uso Directory Opus en vez de explorer y con el comando de inicio usted puede conseguir su gestor de archivos por defecto y no el explorador!!!
  5. 1

    Esto funciona incluso si el nombre de archivo/carpeta tiene varios espacios entre las palabras.

        //In this example there are 3 spaces between "GAME" and "OF" and 2 spaces between "OF" and "Thrones"
        String onlyPath = "D:\\GAME   OF  Thrones";
        String selectPath = "/select," + onlyPath;        
    
        //START: Strip one SPACE among consecutive spaces
        LinkedList<String> list = new LinkedList<>();
        StringBuilder sb = new StringBuilder();
        boolean flag = true;
    
        for (int i = 0; i < selectPath.length(); i++) {
            if (i == 0) {
                sb.append(selectPath.charAt(i));
                continue;
            }
    
            if (selectPath.charAt(i) == ' ' && flag) {
                list.add(sb.toString());
                sb.setLength(0);
                flag = false;
                continue;
            }
    
            if (!flag && selectPath.charAt(i) != ' ') {
                flag = true;
            }
    
            sb.append(selectPath.charAt(i));
        }
    
        list.add(sb.toString());
    
        list.addFirst("explorer.exe");
        //END: Strip one SPACE among consecutive spaces
    
        //Output List
        for (String s : list) {
            System.out.println("string:"+s);
        }
        /*output of above loop
    
        string:explorer.exe
        string:/select,D:\GAME
        string:  OF
        string: Thrones
    
        */
    
        //Open in Explorer and Highlight
        Process p = new ProcessBuilder(list).start();
  6. 1

    Aquí es una versión más corta de arriba.

        String onlyPath = "D:\\GAME   OF  Thrones";
        String completeCmd = "explorer.exe /select," + onlyPath;
        new ProcessBuilder(("explorer.exe " + completeCmd).split(" ")).start();
  7. 1

    Siempre uso el «\» en lugar de «/», de lo contrario sólo el Explorador se abrirá, para obtener más leer esto – Modificadores de línea de comandos que puede utilizar para abrir la interfaz gráfica de usuario de Windows Explorer (Explorer.exe)

    Utilizando Windows CLI :

    C:\Users\Md Arif Mustafa>explorer.exe /select, "C:\Users\Md Arif Mustafa\Music\Aafreen-Himesh.mp3"

    Mismo en el código fuente de Java :
    Aquí la variable de las rutas de los archivos es un ArrayList<String> y contiene una carpeta todos los archivos de la ruta.

    try {
        Process proc = Runtime.getRuntime().exec("explorer.exe /select, " + filePaths.get(i).replaceAll("/", "\\\\"));
        proc.waitFor();
    } catch (IOException | InterruptedException ex ) {
        ex.printStackTrace();
    }

    Funcionó para mí y espero que sea de ayuda para usted!

Dejar respuesta

Please enter your comment!
Please enter your name here