设置 JavaFX FileChooser 的初始目录

lil*_*i42 5 java 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. 我该如何解决这个问题?

Jam*_*s_D 5

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

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

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

// ...

FileChooser chooser = new FileChooser();
chooser.setInitialDirectory(recordsDir);
Run Code Online (Sandbox Code Playgroud)