设置JavaFX FileChooser的初始目录

时间:2016-03-10 17:39:30

标签: java javafx filechooser

我想允许我的程序用户只从项目文件夹中的某个目录打开文件。在Stack Overflow上,我经常找到以下解决方案:chooser.setInitialDirectory(new File(System.getProperty("user.home"));,但我试图引用项目中的resources文件夹。我尝试使用fileChooser.setInitialDirectory(new File("/resources/"));,但我得到java.lang.IllegalArgumentException: Folder parameter must be a valid folder。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

resources文件夹,基本上任何成为已部署应用程序一部分的文件夹,在运行时都不可写或可浏览。本质上,当您部署应用程序时,运行应用程序所需的一切都捆绑到一个存档文件中,因此resources根本不是一个文件夹,它是存档中的一个条目。您无法写入或浏览此类位置。

如果您希望用户能够将文件保存到特定位置,则应定义这样的位置:通常,您将此设置为用户主目录的子目录。因此,例如,你可以这样做:

File recordsDir = new File(System.getProperty("user.home"), ".myApplicationName/records");
if (! recordsDir.exists()) {
    recordsDir.mkdirs();
}

// ...

FileChooser chooser = new FileChooser();
chooser.setInitialDirectory(recordsDir);