Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Java控制台应用程序公开macOS Finder中的文件_Java_Macos_File_Finder - Fatal编程技术网

从Java控制台应用程序公开macOS Finder中的文件

从Java控制台应用程序公开macOS Finder中的文件,java,macos,file,finder,Java,Macos,File,Finder,在Sierra或High Sierra上使用Java 10,使用Oracle JDK或JVM,控制台Java应用程序是否有一种方法可以使其出现在前台并公开特定现有文件的位置?令人惊讶的是,它非常简单(当然,在Windows中尝试这样做会更简单) 因此,经过一些初步研究,我偶然发现,这很重要,因为几乎所有的解决方案都建议使用open-a Finder{file\folder},这并不是我想要的(它会在Finder的编辑器中打开文件(我使用文本文件进行测试)) 相反,建议使用open-R{file/

在Sierra或High Sierra上使用Java 10,使用Oracle JDK或JVM,控制台Java应用程序是否有一种方法可以使其出现在前台并公开特定现有文件的位置?

令人惊讶的是,它非常简单(当然,在Windows中尝试这样做会更简单)

因此,经过一些初步研究,我偶然发现,这很重要,因为几乎所有的解决方案都建议使用
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运行时环境(build 1.8.0_171-b11)——但我看不出Java版本是一个好的版本issue@BasilBourque还要注意退出值,在我的测试中
1
意味着文件/文件夹不存在亲爱的投票人,请在投票时留下评论。