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 utilisons 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 a - t-il une autre API en java qui peut réaliser cette action?

Author: Charles Wu, 2011-09-09

7 answers

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

Cela fonctionne également s'il y a un espace dans le PATH.

 28
Author: Stone, 2015-08-07 08:46:10

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 quand même utiliser l'API de bureau.

Process p = new ProcessBuilder("explorer.exe", "/select,C:\\directory\\selectedFile").start();
 27
Author: krock, 2011-09-10 04:19:40

MODIFIER:

Vous ne pouvez pas mettre en surbrillance un fichier spécifique avec l'API java Desktop.

RÉPONSE À LA QUESTION ORIGINALE:

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 leurs explorateurs par défaut respectivement.

Vous pouvez également utiliser la nouvelle API java Path pour créer le chemin requis, puis invoquer la méthode qui renvoie l'objet File correspondant.

Par souci de brièveté, j'ai exclu le code de vérification pour m'assurer que les objets Bureau et Fichier existent.

 25
Author: Zixradoom, 2014-04-24 14:26:54

Nous pouvons ouvrir un chemin spécifique à partir de la ligne de commande avec:

start C:/ProgramData

Il y a deux façons en java que vous pouvez utiliser pour ouvrir l'explorateur Windows avec un chemin spécifique:

  1. 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();
    }
    
  2. Utiliser la classe Desktop

    try {
        Desktop.getDesktop().open(new File("C:/ProgramData"));
    } catch (IOException e) {
        e.printStackTrace();
    }
    
 3
Author: Mohit, 2016-09-12 07:19:13

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();
 1
Author: Aravind Sharma, 2016-04-24 04:54:04

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();
 1
Author: Martin Koukal, 2017-05-04 11:49:06

Utilisez toujours le "\" au lieu de "/", sinon seul l'Explorateur s'ouvrira, pour plus de lire ceci - Commutateurs de ligne de commande que vous pouvez utiliser pour ouvrir l'interface graphique Windows Explorer (Explorer.exe)

Utilisation de l'interface de ligne de commande Windows:

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 la variable filePaths est un ArrayList<String> et contient un dossier all files path.

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!

 0
Author: ArifMustafa, 2017-11-09 10:10:44