在很多程序中,都有一个选项可以使用本机操作系统文件资源管理器来查找特定文件。这个功能如何用java实现呢?
Java 提供了
java.awt.Desktop
(API JDK 11),可以使用它进行此类交互:
File file = new File("/path/to/file.txt");
Desktop.getDesktop().open(file.getParentFile());
我使用
file.getParentFile()
打开包含该文件的目录,而不是文件本身。
如果执行此行,Finder(在 macOS 上)、资源管理器(在 Windows 上)或 Linux 上的默认文件浏览器将打开一个包含指定目录的新窗口。
文件选择器怎么样?
FileChooser fileChooser = new FileChooser();
fileChooser.setInitialDirectory(new File("data"));
fileChooser.setInitialFileName("myfile.txt");
fileChooser.getExtensionFilters().addAll(
new FileChooser.ExtensionFilter("Text Files", "*.txt")
,new FileChooser.ExtensionFilter("HTML Files", "*.htm")
);
File selectedFile = fileChooser.showOpenDialog(stage);
在 macOS 上唯一有效的解决方案是这个:
ProcessBuilder pb = new ProcessBuilder("/usr/bin/open", "-R", pathName);
pb.start();