如何使用java代码打开Windows文件资源管理器并突出显示指定的文件?

Cha*_* Wu 38 java windows explorer

我现在使用java Desktop API来操作文件资源管理器.我知道如何打开文件资源管理器,但我不知道如何打开它并突出显示指定的文件.

当我们使用Chrome时,在下载文件后,我们可以选择"在文件夹中显示"来打开文件资源管理器并突出显示下载的文件.

如何使用java Desktop API这样做?或者java中是否有其他API可以实现此操作?

Sto*_*one 41

使用: Runtime.getRuntime().exec("explorer.exe /select," + path);

如果有空间,这也有效PATH.

  • @CharlesWu你其实都是正确的.@Stone指的是包含整个路径的变量`path`,而你的只是字符串"path"(在每个(?)系统中都是无效的,但它编译). (2认同)

Zix*_*oom 28

编辑:

从java 9开始,Desktop API中现在有一种方法可以选择文件

desktop.browseFileDirectory(<file>)
Run Code Online (Sandbox Code Playgroud)

编辑:

您无法使用java Desktop API突出显示特定文件.

回答原始问题:

Desktop API允许您使用此代码段执行此操作,

File file = new File ("c:\<directory>");
Desktop desktop = Desktop.getDesktop();
desktop.open(file);
Run Code Online (Sandbox Code Playgroud)

上面使用的代码文档位于以下链接: http://docs.oracle.com/javase/10/docs/api/java/awt/Desktop.htmlhttp://docs.oracle.com/javase/ 10 /文档/ API/JAVA/IO/File.html

在Windows计算机上,这将打开默认文件资源管理器,在其他系统上,它将分别打开其默认资源管理器.

或者,您可以使用新的Java Path API来构建所需的路径,然后调用返回相应File对象的方法.

为简洁起见,我排除了检查代码以确保Desktop和File对象存在.

  • 也不适用于 Debian Linux。它的作用是什么?无论如何,这里有一张描述这一点的票证:https://bugs.openjdk.java.net/browse/JDK-8233994 (2认同)

kro*_*ock 27

Desktop API不支持此功能.您将不得不使用ProcessBuilder(或替代Runtime.exec())使用所需的选项显式执行explorer.exe .这只适用于Windows,如果你想在另一个操作系统上运行它,你还是必须使用Desktop API.

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

  • 当路径有空格时,这会打开我的主文件夹:( (2认同)
  • 我使用`Runtime.exec()`并且它有效.谢谢. (2认同)