我不知道如何获取选定的文件exstesion。我看到开发人员经常提出这个问题,但我能找到并给出正确答案。我知道这是一个错误(fhttp://javafx-jira.kenai.com/browse/RT-18836),但无论如何都有任何解决方案。所以我想把我的折线图保存为pdf或png。我的两个文件的代码工作正常。但我无法忍受不被选中的文件。有没有可能的溶剂。我看到Java内置了这个问题的功能。
此解决方案与我无关: JavaFX FileChooser not returning file extension for Windows
我的代码是:
FileChooser fileChooser = new FileChooser();
FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("PDF file(*.pdf)" ,"
*.pdf");
fileChooser.getExtensionFilters().add(extFilter);
extFilter = new FileChooser.ExtensionFilter("PNG files (*.png)", "*.png");
fileChooser.getExtensionFilters().add(extFilter);
fileChooser.setTitle("Save as");
File file = fileChooser.showSaveDialog(primaryStage);
然后我得到没有扩展名的文件路径:
String filePath = file.getAbsolutePath();
答案 0 :(得分:7)
如果你想知道文件选择器中所选文件的扩展名,这里是代码..
String fileName = file1.getName();
String fileExtension = fileName.substring(fileName.lastIndexOf(".") + 1, file1.getName().length());
System.out.println(">> fileExtension" + fileExtension);
以下是文件选择器需要做的简要说明,
FileChooser fileChooser = new FileChooser();
// Set extension filter
FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("Image Files", "*.jpg", "*.jpeg");
fileChooser.getExtensionFilters().add(extFilter);
File file = fileChooser.showOpenDialog(root.getScene().getWindow());
if (file != null) {
String fileName = file.getName();
String fileExtension = fileName.substring(fileName.lastIndexOf(".") + 1, file.getName().length());
System.out.println(">> fileExtension" + fileExtension);
}
答案 1 :(得分:1)
如果你问我,这在JavaFX中是一件很烦人的事 - 因为他们会自动在Windows上附加扩展名,但不会在Linux或Mac上附加。
因此,如果您想确定您要创建的文件将具有扩展名,则需要执行以下操作:
FileChooser fc = new FileChooser();
fc.setInitialFileName("Exported.txt");
fc.getExtensionFilters().add(new FileChooser.ExtensionFilter("Text Files (*.txt)", "*.txt"));
fc.getExtensionFilters().add(new FileChooser.ExtensionFilter("XML Files (*.xml)", "*.xml"));
fc.getExtensionFilters().add(new FileChooser.ExtensionFilter("All Files (*.*)", "*"));
File file = fc.showSaveDialog(rootPane.getScene().getWindow());
if (file != null)
{
File f;
String tempPath = file.getCanonicalPath().toLowerCase();
if (!(tempPath.endsWith(".txt") || tempPath.endsWith(".xml")))
{
String extension = fc.selectedExtensionFilterProperty().get().getExtensions().get(0).substring(1);
// default to .txt, if the user had *.* selected
if (extension.length() == 0)
{
extension = ".txt";
}
f = new File(file.getCanonicalPath() + extension);
}
else
{
f = file.getCanonicalFile();
}
System.out.println(f);
if (f.exists())
{
System.err.println("You will overwrite!");
}
}
请注意,由于我们可能使用的文件名与文件选择器不同,因此可能没有提示用户覆盖现有文件 - 因此您也必须手动处理该检查。