设置 JavaFX FileChooser 的初始目录

Set initial directory of JavaFX FileChooser

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

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

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

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

// ...

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