Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用JFileChooser保存文件?_Java_Swing_Bufferedimage_Jfilechooser_Filefilter - Fatal编程技术网

Java 如何使用JFileChooser保存文件?

Java 如何使用JFileChooser保存文件?,java,swing,bufferedimage,jfilechooser,filefilter,Java,Swing,Bufferedimage,Jfilechooser,Filefilter,我的应用程序中有一个名为“另存为”的方法,它将我的应用程序在我的计算机上的图像保存到一个文件中。 我使用JFileChooser让用户选择他们想要保存文件的位置。 问题是,除非用户显式地键入文件格式,否则它会保存文件而不带扩展名。 如何在文件类型下拉菜单中使用jpg、png等格式 还有,如何从文件类型下拉菜单中获取用于保存图像文件的扩展名 ImageIO.write(image,extension,file); 使用JFileChoose.SetFileFilter示例:最后,我解决了自己的

我的应用程序中有一个名为“另存为”的方法,它将我的应用程序在我的计算机上的图像保存到一个文件中。 我使用JFileChooser让用户选择他们想要保存文件的位置。 问题是,除非用户显式地键入文件格式,否则它会保存文件而不带扩展名。 如何在文件类型下拉菜单中使用jpg、png等格式

还有,如何从文件类型下拉菜单中获取用于保存图像文件的扩展名

 ImageIO.write(image,extension,file);

使用JFileChoose.SetFileFilter示例:

最后,我解决了自己的问题:

JFileChooser fc=newjfilechooser(“C:/”);
fc.addChoosableFilter(新的JPGSaveFilter());
fc.addChoosableFilter(新的JPEGSaveFilter());
fc.addChoosableFilter(新的PNGSaveFilter());
fc.addChoosableFilter(新的GIFSaveFilter());
fc.addChoosableFilter(新的BMPSaveFilter());
fc.addChoosableFileFilter(新的WBMPSaveFilter());
int retrieval=fc.showsavedilog(null);
if(检索==JFileChooser.APPROVE\u选项){
字符串ext=“”;
字符串扩展名=fc.getFileFilter().getDescription();
if(扩展名.equals(“*.jpg,*.jpg”)){
ext=“.jpg”;
}else if(扩展名.equals(“*.png,*.png”)){
ext=“.png”;
}else if(扩展名.equals(“*.gif,*.gif”)){
ext=“.gif”;
}else if(扩展名.equals(“*.wbmp,*.wbmp”)){
ext=“.wbmp”;
}else if(扩展名.equals(“*.jpeg,*.jpeg”)){
ext=“.jpeg”;
}else if(extension.equals(“*.bmp,*.bmp”)){
ext=“.bmp”;
}
}
示例过滤器:

包示例
导入java.io.File;
导入javax.swing.filechooser.FileFilter;
类JPGSaveFilter扩展了FileFilter{
@凌驾
公共布尔接受(文件f){
if(f.isDirectory()){
返回false;
}
字符串s=f.getName().toLowerCase();
返回s.endsWith(“.jpg”);
}
@凌驾
公共字符串getDescription(){
返回“*.jpg,*.jpg”;
}
}

准备文件选择器过滤器:

    jFileChooser.addChoosableFileFilter(new FileNameExtensionFilter("File X (.xxx)", "xxx"));
    jFileChooser.addChoosableFileFilter(new FileNameExtensionFilter("File Y (.yyy)", "yyy"));
    jFileChooser.addChoosableFileFilter(new FileNameExtensionFilter("File Z (.zzz)", "zzz"));

    // set default type
    jFileChooser.setFileFilter(jFileChooser.getChoosableFileFilters()[0]);

    // set default file
    jFileChooser().setSelectedFile(defaultFile);
批准验证后

//Add extension to Selected file 
File file = new File(jFileChooser().getSelectedFile().getCanonicalPath() + "." + ((FileNameExtensionFilter) jFileChooser().getFileFilter()).getExtensions()[0]);

验证所选文件是否带有扩展名可能是个好主意。

我想我得到了更好的解决方案。 将用示例代码片段解释它

这是我设置文件筛选器的方式:
jFileChooser.setFileFilter(新文件名extensionfilter(“.txt”、“txt”)

之后是主保存行:
textArea1.write(新的缓冲写入程序(新的文件写入程序(jFileChooser.getSelectedFile().getAbsolutePath()+jFileChooser.getFileFilter().getDescription().replace(“所有文件”)))

当然,最重要的是这个片段:
jFileChooser.getSelectedFile().getAbsolutePath()+jFileChooser.getFileFilter().getDescription().replace(“所有文件”)

我唯一不喜欢的是,我找不到任何像“getExtension”这样的方法,这意味着如果没有字符串方面的不必要的麻烦,就不能有任何好的描述


好的,明白了。你可以这样做:
jFileChooser.getFileFilter().toString().replaceFirst(“.*extensions=\\[(.])”,“$1”).replaceFirst(“.*AcceptableFileFilter.*”,”)


不幸的是,它不太漂亮,但似乎很有魅力。

好的。。setFileFilter将在文件类型下拉菜单中显示扩展名。但是如何从这个文件类型下拉菜单中检索或使用选定的扩展名..一旦你有了选定的文件,它应该像字符串ext=File.getName().substring(File.getName().lastIndexOf(“.”)一样简单;这是一个相当疯狂的URL。。。它包含“java”、“file”和“filter”三次,我只能说,LOD原则在这个答案中消失了!对不起,不是我,我只是另一个面对这一切的人。