设置 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);
我想允许我的程序的用户只能从项目文件夹中的特定目录打开文件。在 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);