【发布时间】:2018-06-10 01:00:57
【问题描述】:
在macOS Sierra 或 High Sierra 上使用 Java 10,使用 Oracle JDK 或 OpenJDK 或 Zulu/Zing JVM,有没有办法让控制台 Java 应用程序使 Finder 出现在前台并暴露位置特定的现有文件?
【问题讨论】:
-
亲爱的投票者,请在投票的同时发表评论。
在macOS Sierra 或 High Sierra 上使用 Java 10,使用 Oracle JDK 或 OpenJDK 或 Zulu/Zing JVM,有没有办法让控制台 Java 应用程序使 Finder 出现在前台并暴露位置特定的现有文件?
【问题讨论】:
出人意料地简单(肯定比尝试在 Windows 中执行此操作更重要)。
所以,经过一些初步研究,我偶然发现了Shell tricks: the OS X open command,这很重要,因为几乎所有解决方案都建议使用open -a Finder {file\folder},这并不完全符合我的要求(它会在 Finder 的编辑器中打开文件(我使用文本文件进行测试))
建议使用open -R {file/folder}
下一个任务是尝试弄清楚你是否可以从 Java 调用 open,我原以为我必须先通过 shell 执行它,但结果证明这不是必需的。
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})
【讨论】:
1 表示文件/文件夹不存在