JavaFX 2.2 Get selected file extension

蹲街弑〆低调 提交于 2019-12-03 20:44:50
Shreyas Dave

If you want to know the extension of selected file from file chooser here is a code..

String fileName = file1.getName();          
String fileExtension = fileName.substring(fileName.lastIndexOf(".") + 1, file1.getName().length());
System.out.println(">> fileExtension" + fileExtension);

And here is a brief of what you need to do with file chooser,

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);

}

This is a pretty annoying thing in JavaFX if you ask me - because they will automatically append the extension on Windows, but not on Linux or Mac.

So, if you want to be sure that the file you will create will have an extension, you need to do something like this:

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!");
    }
}

Note, since we are potentially using a different file name than what came out of the file chooser, the user may not have been prompted about overwriting an existing file - so you will have to handle that check manually as well.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!