使用JFileChooser将文件类型附加到Java文件中

我正在尝试使用JFileChooser保存图像。 我只希望用户能够将图像保存为jpg。 但是,如果他们不输入.jpg,则不会将其保存为图像。 有可能以某种方式将“.jpg”附加到文件的末尾吗?

File file = chooser.getSelectedFile() + ".jpg"; 

不起作用,因为我正在向文件添加字符串。

为什么不在完成后将File转换为String并创建新File

 File f = chooser.getSelectedFile(); String filePath = f.getAbsolutePath(); if(!filePath.endsWith(".jpg")) { f = new File(filePath + ".jpg"); } 

请记住,如果它已经存在,则无需添加.jpg

如果您分两步执行此操作:将扩展名添加到所选文件,然后创建附加了扩展名的File对象。

 String withExtension = chooser.getSelectedFile().getAbsolutePath() + ".jpg"; File file = new File( withExtension ) 

在您的问题中隐含,但仅涵盖所有基础:需要检查扩展名是否已经存在,例如:

 String withExtension = chooser.getSelectedFile().getAbsolutePath(); if( !withExtension.toLowerCase().endsWith( ".jpg" ) ) withExtension += ".jpg"; 

[你可能想在上面加上“.jpeg” – 这是JPEG文件的有效扩展名]

以下代码可能有效,也可能无效。 File有一个toString()允许它编译,但我宁愿使用上面的方法,在那里我可以控制我得到的确切路径名。 File对象的toString()文档对我究竟返回的内容有点不清楚。 在这样的情况下,我更喜欢调用一个我知道返回我需要的函数。

 File file = new File( chooser.getSelectedFile() + ".jpg" ); 

最好的方法是检查可接受的条目。 如果找不到,请替换文件exention而不是在其上面书写。

 File f = chooser.getSelectedFile().getAbsolutePath(); String path = f.getAbsolutePath(); if (!path.matches(".*\\.(jpg|jpeg)")) { // If the extension isn't there. We need to replace it path = path.substring(0, path.lastIndexOf(".") + 1).concat("jpg"); f = new File(path); }