9

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

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

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

4

3 回答 3

13

完成后为什么不将其转换File为 aString并创建一个新File的?

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

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

于 2012-05-06T14:54:08.757 回答
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";

[您可能想在if上面添加“.jpeg” - 它是 JPEG 文件的有效扩展名]

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

File file = new File( chooser.getSelectedFile() + ".jpg" ); 
于 2012-05-06T14:59:40.170 回答
1

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

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);
}
于 2012-05-06T14:54:14.463 回答