使用JFileChooser将文件类型附加到Java文件中
问题描述:
我试图使用JFileChooser保存图像。我只希望用户能够将图像保存为jpg。但是,如果他们不输入.jpg,它不会被保存为图像。是否有可能以某种方式将“.jpg”附加到文件末尾?使用JFileChooser将文件类型附加到Java文件中
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
。
答
最好的办法是检查一个可接受的条目。如果没有找到,则替换文件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);
}
答
它的工作原理,如果你在两个步骤完成:添加扩展到选定的文件,然后创建一个附加到它的扩展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文件的有效扩展名]
下面的代码可能无法正常工作。 File
有一个toString()
可以编译,但我宁愿使用上面的方法,我可以控制我得到的确切路径名。 File
对象的toString()
文档对我而言有点不清楚,究竟返回的是什么。在像这样的情况下,我更喜欢调用一个我知道的函数来返回我需要的东西。
File file = new File(chooser.getSelectedFile() + ".jpg");
这个答案就可以做到。但是,请执行filePath.concat(“。jpg”)以避免不必要的StringBuilder构造。 – Justin
@Justin创建一个新的'StringBuilder'的开销应该可以忽略不计,因为他只执行一次动作。 – Jeffrey
谢谢杰弗里:)可悲的是我还不能投票。你知道为什么\t \t \t \t \t格式名称在这里是必需的:ImageIO.write(image,“jpg”,file);它似乎没有什么区别?如果你必须在文件上使用格式? – Kingteeb