如何使用java代码打开Windows文件资源管理器并突出显示指定文件?
我现在使用 java Desktop API 来操作文件资源管理器。 我知道如何打开文件资源管理器,但不知道如何打开它并突出显示指定的文件。
当我们使用Chrome时,下载文件后,我们可以选择“在文件夹中显示”来打开文件资源管理器并突出显示下载的文件。
如何使用java Desktop API来做到这一点? 或者java中有没有其他API可以实现这个动作?
I am now using java Desktop API to manipulate file explorer.
I know how to open the file explorer but I don't know how to open it and highlight the specified file.
As we using the Chrome, after downloading files, we can choose "show in folder" to open the file explorer and highlight the downloaded file.
How to use java Desktop API to do so?
Or is there any other API in java can realize this action?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
使用: Runtime.getRuntime().exec("explorer.exe /select,\"" + path + "\"");
如果 PATH 中有空格,这也有效。
Use:
Runtime.getRuntime().exec("explorer.exe /select,\"" + path + "\"");
This also works if there is a space in the
PATH
.编辑:
从 java 9 开始,桌面 API 中有一种选择文件的方法
编辑:
您无法使用 java 桌面 API 突出显示特定文件。
原始问题的答案:
桌面 API 将允许您使用此代码片段来执行此操作,
上面使用的代码的文档位于这些链接,
http://docs.oracle.com/javase/10 /docs/api/java/awt/Desktop.html 和
http://docs.oracle.com/javase/10 /docs/api/java/io/File.html
在 Windows 计算机上,这将打开默认文件资源管理器,在其他系统上,它将分别打开其默认资源管理器。
或者,您可以使用新的 java Path API 构建所需的路径,然后调用返回相应 File 对象的方法。
为了简洁起见,我排除了检查代码以确保桌面和文件对象存在。
EDIT:
As of java 9 there is now a method in the Desktop API to select the file
EDIT:
You cannot highlight a specific file with the java Desktop API.
ANSWER TO ORIGINAL QUESTION:
The Desktop API will allow you to do this by using this snippet,
The documentation for the code used above is at these links,
http://docs.oracle.com/javase/10/docs/api/java/awt/Desktop.html and
http://docs.oracle.com/javase/10/docs/api/java/io/File.html
On a Windows computer this will open the default file explorer and on other systems it will open their default explorers respectively.
Alternatively you could use the new java Path API to build the required path and then invoke the method that returns the corresponding File object.
For brevity I excluded the checking code to make sure the Desktop and File objects exist.
桌面 API 不支持此功能。您将必须使用
ProcessBuilder
(或者
Runtime.exec()
) 显式执行 explorer.exe 您想要的选项。不过,这只适用于 Windows,如果你想在其他操作系统上运行它,你无论如何都必须使用桌面 API。The Desktop API does not support this. You are going to have to use
ProcessBuilder
(or alternativelyRuntime.exec()
) to execute explorer.exe explicitly with the options you want. This will only work on windows though, if you want to run this on another OS you will have to use the Desktop API anyway.我们可以从命令行打开特定路径:
在java中有两种方法可以使用特定路径打开Windows资源管理器:
使用Process类(如已经回答的)但使用启动命令
<前><代码>尝试{
进程生成器 = Runtime.getRuntime().exec("cmd /c start C:/ProgramData");
} catch (IOException e) {
e.printStackTrace();
}
使用 Desktop 类
<前><代码>尝试{
Desktop.getDesktop().open(new File("C:/ProgramData"));
} catch (IOException e) {
e.printStackTrace();
}
We can open a specific path from command line with :
There are two ways in java you can use to open windows explorer with specific path:
Use Process class(as already answered) but with start command
Use Desktop class
始终使用“\”而不是“/”,否则只会打开资源管理器,请先阅读此内容 - 可用于打开 GUI Windows 资源管理器 (Explorer.exe) 的命令行开关
使用 Windows CLI:
与 Java 源代码相同:并且包含一个文件夹所有文件路径。
这里变量 filePaths 是一个 ArrayList
它对我有用,希望对您有帮助!
Always use the "\" instead of "/", otherwise only the Explorer will open, fore more read this - Command-line switches that you can use to open the GUI Windows Explorer (Explorer.exe)
Using Windows CLI :
Same in Java source code :
Here variable filePaths is an
ArrayList<String>
and contains a folder all files path.It worked for me and hope it helps you!
即使文件/文件夹名称在单词之间有多个空格,这也有效。
This works even if file/folder name has multiple spaces between words.
这是上面的较短版本。
Here is shorter version of above.
正确
ProcessBuilder
代码实际上如下:注意,需要在
/select,
之后启动一个新命令,否则会打开<代码>文档文件夹。The correct
ProcessBuilder
code is actually the following:Note that you need to start a new command after
/select,
, otherwise it will open theDocuments
folder.