我正在尝试根据我找到here的示例在用户目录中打开javafx FileChooser。
以下是我正在使用的简单代码的片段:
FileChooser fc = new FileChooser();
fc.setTitle("Open Dialog");
String currentDir = System.getProperty("user.dir") + File.separator;
file = new File(currentDir);
fc.setInitialDirectory(file);
但是,我一直在获取此警告(已完成文件路径被截断):
Invalid URL passed to an open/save panel: '/Users/my_user'. Using 'file://localhost/Users/my_user/<etc>/' instead.
我验证了file
对象是添加以下行的现有目录:
System.out.println(file.exists()); //true
System.out.println(file.isDirectory()); //true
然后我不知道为什么我会收到警告信息。
更新
这似乎是JavaFX中的一个错误:https://bugs.openjdk.java.net/browse/JDK-8098160 (您需要创建一个免费的Jira帐户才能查看错误报告)。 这个问题发生在OSX中,不知道其他平台。
答案 0 :(得分:8)
这就是我最终做的事情,它就像一个魅力。
此外,请确保在尝试阅读时可以访问您的文件夹(良好做法)。您可以创建该文件,然后检查是否可以读取它。如果您无法访问用户目录,则完整代码将如下所示,默认为c:
驱动器。
FileChooser fileChooser = new FileChooser();
//Extention filter
FileChooser.ExtensionFilter extentionFilter = new FileChooser.ExtensionFilter("CSV files (*.csv)", "*.csv");
fileChooser.getExtensionFilters().add(extentionFilter);
//Set to user directory or go to default if cannot access
String userDirectoryString = System.getProperty("user.home");
File userDirectory = new File(userDirectoryString);
if(!userDirectory.canRead()) {
userDirectory = new File("c:/");
}
fileChooser.setInitialDirectory(userDirectory);
//Choose the file
File chosenFile = fileChooser.showOpenDialog(null);
//Make sure a file was selected, if not return default
String path;
if(chosenFile != null) {
path = chosenFile.getPath();
} else {
//default return value
path = null;
}
这适用于Windows和Linux,但在其他操作系统上可能有所不同(未经测试)
答案 1 :(得分:1)
尝试:
String currentDir = System.getProperty("user.home");
file = new File(currentDir);
fc.setInitialDirectory(file);
答案 2 :(得分:-1)
<ctr:CircularProgressBar x:Name="progressBar" Grid.ZIndex="3"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Height="100"
Width="100"/>