我正在创建一个应用程序,在该应用程序中,用户实际上能够非常轻松地单击应用程序中的链接,这会在 Finder(在 Mac 中)/Windows 资源管理器中打开一个特定的文件夹。这可能发生在链接或按钮的点击事件上。
有没有一种方法可以通过 Swing 打开这些 native 操作系统应用程序(针对特定文件夹)?
最佳答案
简答:
if (Desktop.isDesktopSupported()) {
Desktop.getDesktop().open(new File("C:\\"));
}
长答案: 虽然读取它是什么操作系统然后运行特定于操作系统的命令是可行的,但它在一定程度上需要对需要完成的操作进行硬编码。
让 Java 处理每个操作系统打开目录的方式。不应该是我们头疼的事情。 <3 抽象。
阅读#open(File)方法文档显示它将在支持该操作的所有操作系统上打开链接。如果当前平台不支持打开文件夹或文件(比如headless环境?当然打不开是我的猜测),会抛出UnsupportedOperationException
。如果用户无权读取文件夹(Windows Vista/7/8,基于 Unix 的计算机),您将收到 SecurityException
。所以如果你问我,它处理得相当好。
更新:在获取 Desktop
对象之前添加了一个 if 检查,这样您的代码就不会出现讨厌的 HeadlessException
和 UnsupportedOperationException
#getDesktop() Java Documentation 中提到的异常.
关于java - 使用 Java Swing 打开 Finder/Explorer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12339922/