【问题标题】:Expose a file in the macOS Finder from a Java console app从 Java 控制台应用程序在 macOS Finder 中公开文件
【发布时间】:2018-06-10 01:00:57
【问题描述】:

macOS Sierra 或 High Sierra 上使用 Java 10,使用 Oracle JDK 或 OpenJDKZulu/Zing JVM,有没有办法让控制台 Java 应用程序使 Finder 出现在前台并暴露位置特定的现有文件?

【问题讨论】:

  • 亲爱的投票者,请在投票的同时发表评论。

标签: java macos file finder


【解决方案1】:

出人意料地简单(肯定比尝试在 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}

【讨论】:

  • 我要求在 Finder 中简单地显示文件,而不是使用它的内容。我希望用户看到 Finder 出现在最前面,打开了一个 Finder 窗口,并且指定的文件可见(最好是选中的)。
  • 你试过了吗?
  • 是的,没有效果。但我使用的是 IntelliJ IDE,所以可能会影响效果。
  • @BasilBourque 对我来说很好。您是否尝试从命令行运行命令?我正在使用 High Sierra (10.13.4) 和 Oracle 的 Java(TM) SE 运行时环境(内部版本 1.8.0_171-b11) - 但我看不出 Java 版本是个问题
  • @BasilBourque 还要注意退出值,在我的测试中1 表示文件/文件夹不存在
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-11
  • 2010-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多