Comment utiliser le code java pour ouvrir l'Explorateur de fichiers Windows et mettre en surbrillance le fichier spécifié?
J'utilise maintenant java Desktop API pour manipuler l'Explorateur de fichiers. Je sais comment ouvrir l'Explorateur de fichiers mais je ne sais pas comment l'ouvrir et mettre en surbrillance le fichier spécifié.
Comme nous en utilisant le Chrome, après le téléchargement des fichiers, nous pouvons choisir "afficher dans le dossier" pour ouvrir l'Explorateur de fichiers et mettre en évidence le fichier téléchargé.
Comment utiliser java Desktop API pour le faire? Ou y at-il une autre API en java peut réaliser cette action?
7 réponses
Utiliser: Runtime.getRuntime().exec("explorer.exe /select," + path);
Cela fonctionne aussi si il y a un espace dans le PATH
.
L'API de bureau ne prend pas en charge cela. Vous allez avoir à utiliser ProcessBuilder
(ou sinon Runtime.exec()
) pour exécuter l'explorateur.exe explicitement , avec les options que vous souhaitez. Cela ne fonctionnera que sur windows, si vous voulez l'exécuter sur un autre système d'exploitation, vous devrez utiliser l'API de bureau de toute façon.
Process p = new ProcessBuilder("explorer.exe", "/select,C:\\directory\\selectedFile").start();
Modifier:
Vous ne pouvez pas mettre en surbrillance un fichier spécifique avec l'API java Desktop.
RÉPONSE À LA QUESTION INITIALE:
L'API de bureau vous permettra de le faire en utilisant cet extrait,
File file = new File ("c:\<directory>");
Desktop desktop = Desktop.getDesktop();
desktop.open(file);
La documentation pour le code utilisé ci-dessus est à ces liens, http://docs.oracle.com/javase/7/docs/api/java/awt/Desktop.html et http://docs.oracle.com/javase/7/docs/api/java/io/File.html
Sur un ordinateur Windows, cela ouvrira le fichier par défaut explorer et sur d'autres systèmes, il ouvrira respectivement leurs explorateurs par défaut.
Vous pouvez également utiliser la nouvelle API java Path pour construire le chemin requis, puis appeler la méthode qui renvoie l'objet File correspondant.
Par souci de concision, j'ai exclu le code de vérification pour m'assurer que les objets de bureau et de fichier existent.
Nous pouvons ouvrir un chemin spécifique à partir de la ligne de commande avec:
start C:/ProgramData
En java, vous pouvez utiliser deux façons d'ouvrir l'Explorateur windows avec un chemin spécifique:
-
Utilisez la classe Process (comme déjà répondu) mais avec la commande start
try { Process builder = Runtime.getRuntime().exec("cmd /c start C:/ProgramData"); } catch (IOException e) { e.printStackTrace(); }
-
Utiliser la classe de bureau
try { Desktop.getDesktop().open(new File("C:/ProgramData")); } catch (IOException e) { e.printStackTrace(); }
Cela fonctionne même si le nom du fichier / dossier a plusieurs espaces entre les mots.
//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();
Voici une version plus courte de ci-dessus.
String onlyPath = "D:\\GAME OF Thrones";
String completeCmd = "explorer.exe /select," + onlyPath;
new ProcessBuilder(("explorer.exe " + completeCmd).split(" ")).start();
Utilisez toujours le " \ "au lieu de"/", sinon seul l'Explorateur s'ouvrira, avant de lire ceci - commutateurs de ligne de commande que vous pouvez utiliser pour ouvrir L'Explorateur Windows GUI (Explorer.exe)
Utilisation de Windows CLI:
C:\Users\Md Arif Mustafa>explorer.exe /select, "C:\Users\Md Arif Mustafa\Music\Aafreen-Himesh.mp3"
Même chose dans le code source Java :
Ici variable filePaths est un ArrayList<String>
et contient un dossier tous les fichiers chemin.
try {
Process proc = Runtime.getRuntime().exec("explorer.exe /select, " + filePaths.get(i).replaceAll("/", "\\\\"));
proc.waitFor();
} catch (IOException | InterruptedException ex ) {
ex.printStackTrace();
}
Cela a fonctionné pour moi et j'espère que cela vous aidera!