una seleccionar ruta obtener filtro explorador desde como carpeta archivos archivo abrir java windows explorer

seleccionar - ¿Cómo usar el código de Java para abrir el Explorador de archivos de Windows y resaltar el archivo especificado?



obtener la ruta de un archivo en java (7)

Ahora estoy usando java Desktop API para manipular File Explorer. Sé cómo abrir el explorador de archivos, pero no sé cómo abrirlo y resaltar el archivo especificado.

A medida que usamos Chrome, después de descargar los archivos, podemos elegir "mostrar en la carpeta" para abrir el explorador de archivos y resaltar el archivo descargado.

¿Cómo usar Java Desktop API para hacerlo? ¿O hay alguna otra API en Java que pueda realizar esta acción?


Aquí está la 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();


EDITAR:

No puede resaltar un archivo específico con la API de escritorio de Java.

RESPUESTA A LA PREGUNTA ORIGINAL:

La Desktop API te permitirá hacer esto usando este fragmento,

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

La documentación del código utilizado anteriormente se encuentra en estos enlaces, http://docs.oracle.com/javase/7/docs/api/java/awt/Desktop.html y http://docs.oracle.com/javase/7/docs/api/java/io/File.html

En una computadora con Windows esto abrirá el explorador de archivos predeterminado y en otros sistemas abrirá sus exploradores predeterminados respectivamente.

Alternativamente, podría usar la nueva API de ruta java para compilar la ruta requerida y luego invocar el método que devuelve el objeto File correspondiente.

Por brevedad, excluí el código de comprobación para asegurarme de que existen los objetos Escritorio y Archivo.


Esto funciona incluso si el nombre del archivo / carpeta tiene múltiples 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();


La API de escritorio no es compatible con esto. ProcessBuilder usar ProcessBuilder (o alternativamente Runtime.exec() ) para ejecutar explorer.exe explícitamente con las opciones que desee . Sin embargo, esto solo funcionará en Windows, si desea ejecutar esto en otro sistema operativo, tendrá que usar Desktop API de todos modos.

Process p = new ProcessBuilder("explorer.exe", "/select,C://directory//selectedFile").start();


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

start C:/ProgramData

Hay dos formas en java que puedes usar para abrir Windows Explorer con una ruta específica:

  1. Utilice la clase de proceso (como ya se respondió) pero con el comando de inicio

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

  2. Usa la clase de escritorio

    try { Desktop.getDesktop().open(new File("C:/ProgramData")); } catch (IOException e) { e.printStackTrace(); }


Siempre use "/" en lugar de "/"; de lo contrario, solo se abrirá el Explorador, para más información, lea los interruptores de la línea de comandos que puede usar para abrir la GUI Explorador de Windows (Explorer.exe)

Usando Windows CLI:

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

Lo mismo ocurre con el código fuente de Java: aquí filePaths variable es una ArrayList<String> y contiene una carpeta con todos los archivos de 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 te ayude!


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

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