Предоставить доступ к файлу в macOS Finder из консольного приложения Java - PullRequest
0 голосов
/ 10 июня 2018

Использование Java 10 в macOS Sierra или High Sierra, использование Oracle JDK или OpenJDK или Zulu / Zing JVM, есть ли способ консольного приложения Javaможет заставить Finder выйти на передний план и раскрыть местоположение определенного существующего файла?

1 Ответ

0 голосов
/ 10 июня 2018

Удивительно просто (больше, чем попытка сделать это в Windows, это точно).

Итак, после некоторого начального исследования я наткнулся на Уловки оболочки: команда OS X open , это важно, потому что почти все решения предлагают использовать open -a Finder {file\folder}, что не совсем то, что я хотел (он откроет файл в редакторе Finder (я использовал текстовый файл для тестирования))

Вместо этого предлагается использовать open -R {file/folder}

Следующей задачей была попытка выяснить, можно ли вызвать open из Java, я подумал, что сначала мне придется выполнить его через оболочку, но это оказалось не обязательным.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class Test {

    public static void main(String[] args) throws IOException, InterruptedException {
        String command[] = new String[]{"open", "-R", {your file or folder}};
        ProcessBuilder pb = new ProcessBuilder(command);
               pb.inhertIO();
        pb.redirectErrorStream(true);
        Process p = pb.start();
        int exitCode = p.waitFor();
        System.out.println(exitCode);
    }

}

Я проверял это как на файлах, так и на папках

Я также проверял Desktop.getDesktop().browse, но у меня не было таких же результатов, как увыше (больше похоже на open -a Finder {file/folder})

...