Подтвердить что ты не робот

Как использовать Java-код для открытия проводника Windows и выделить указанный файл?

Теперь я использую java Desktop API для управления файловым проводником. Я знаю, как открыть файл-проводник, но я не знаю, как его открыть и выделить указанный файл.

Как мы используем Chrome, после загрузки файлов мы можем выбрать "показать в папке", чтобы открыть файл-проводник и выделить загруженный файл.

Как использовать java Desktop API для этого? Или есть ли какой-либо другой API в java, который может реализовать это действие?

4b9b3361

Ответ 1

Использование: Runtime.getRuntime().exec("explorer.exe /select," + path);

Это также работает, если в PATH есть пробел.

Ответ 2

API Desktop не поддерживает это. Вам нужно будет использовать ProcessBuilder (или альтернативно Runtime.exec()) для выполнения explorer.exe явно с параметрами, которые вы хотите. Это будет работать только в Windows, но если вы хотите запустить это на другой ОС, вам все равно придется использовать Desktop API.

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

Ответ 3

EDIT:

Вы не можете выделить конкретный файл с помощью java Desktop API.

ОТВЕТ НА ОРИГИНАЛЬНЫЙ ВОПРОС:

API Desktop позволит вам сделать это, используя этот фрагмент,

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

Документация для кода, использованного выше, находится по этим ссылкам, http://docs.oracle.com/javase/7/docs/api/java/awt/Desktop.html и http://docs.oracle.com/javase/7/docs/api/java/io/File.html

На компьютере под управлением Windows это откроет проводник по умолчанию и в других системах он откроет своих исследователей по умолчанию соответственно.

В качестве альтернативы вы можете использовать новый API-интерфейс Java для создания требуемого пути, а затем вызвать метод, который возвращает соответствующий объект File.

Для краткости я исключил контрольный код, чтобы убедиться, что существуют объекты Desktop и File.

Ответ 4

Мы можем открыть определенный путь из командной строки с помощью

start C:/ProgramData

В java можно использовать два способа открыть окно проводника Windows с определенным путем:

  • Использовать класс Process (как уже было сказано), но с помощью команды запуска

    try {
        Process builder = Runtime.getRuntime().exec("cmd /c start C:/ProgramData");
    } catch (IOException e) {
        e.printStackTrace();
    }
    
  • Использование класса Desktop

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

Ответ 5

Это работает, даже если имя файла/папки имеет несколько пробелов между словами.

    //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

Ниже приведена более короткая версия выше.

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

Ответ 7

Всегда используйте "\" вместо "/", иначе откроется только проводник, прежде чем читать это - Переключатели командной строки, которые вы можете используйте для открытия GUI Explorer (Explorer.exe)

Использование CLI для Windows:

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

То же самое в исходном коде Java: Здесь переменная filePaths является ArrayList<String> и содержит путь к папке всех файлов.

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

Это сработало для меня и надеюсь, что это поможет вам!