我想允许我的程序用户只从项目文件夹中的某个目录打开文件。在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
。我该如何解决这个问题?
答案 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);