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

时间:2012-05-06 14:43:40

标签: java jfilechooser file-type

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

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

不起作用,因为我在文件中添加了一个字符串。

3 个答案:

答案 0 :(得分:10)

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

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

请记住,如果.jpg已经存在,则无需添加。{/ p>

答案 1 :(得分:4)

如果您分两步执行此操作:将扩展名添加到所选文件,然后创建附加了扩展名的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”添加到上面的if - 它是JPEG文件的有效扩展名]

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

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

答案 2 :(得分:1)

最好的方法是检查可接受的条目。如果找不到,请替换文件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);
}