【发布时间】:2019-09-21 07:57:48
【问题描述】:
我使用 FXML 在 Java 中按下按钮时运行以下代码
void run(){
FileChooser fc = new FileChooser();
FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("MP4 files (*.mp4)", "*.mp4");
fc.getExtensionFilters().add(extFilter);
fc.setInitialDirectory(videoFile);
videoFile = fc.showOpenDialog(stage);
}
我第一次调用此代码时,它按预期工作,在 Windows 中打开文件选择对话框并返回文件句柄,但是如果我尝试使用相同代码打开一个新文件,则不会发生任何事情并引发此错误。
原因:java.lang.IllegalArgumentException:文件夹参数必须是有效文件夹
这似乎表明它立即无法打开对话框。有谁知道这背后的原因和可能的解决方法?
编辑:
我不正确地为将来可能需要答案的任何人调用 setInitialDirectory。
【问题讨论】:
-
videoFile 是文件而不是目录/文件夹吗?
-
videoFile的变量名表示它保存的是文件,而不是文件夹。错误消息显示“文件夹参数必须是有效文件夹”。这两件事结合起来表明将videoFile设置为initialDirectory是不正确的。也许你的意思是fc.setInitialDirectory(videoFile.getParentFile())? -
感谢您的指导,我似乎刚刚处于自动驾驶状态并完全错过了这一点,感谢你们两位指出这一点。