Java Swing JFileChooser保存文件时根据选择的文件类型自动添加后缀名
刘振兴
代码分享
2015年11月01日
11965
暂无评论
最近做的一个聊天室的小项目,想保存聊天的日志文件,遇到了些问题,设置了文件类型过滤,填写文件名后不会自动加上后缀,以下为该问题的解决方案
首先、定义一个自己的文件扩展名过滤器 MyFileFilter:
import java.io.File;
import javax.swing.filechooser.FileFilter;
public class MyFileFilter extends FileFilter {
String ends; // 文件后缀
String description; // 文件描述文字
public MyFileFilter(String ends, String description) { // 构造函数
this.ends = ends; // 设置文件后缀
this.description = description; // 设置文件描述文字
}
@Override
// 只显示符合扩展名的文件,目录全部显示
public boolean accept(File file) {
if (file.isDirectory()) return true;
String fileName = file.getName();
if (fileName.toUpperCase().endsWith(this.ends.toUpperCase())) return true;
return false;
}
@Override
// 返回这个扩展名过滤器的描述
public String getDescription() {
return this.description;
}
// 返回这个扩展名过滤器的扩展名
public String getEnds() {
return this.ends;
}
}
然后使用自己建的文件扩展名过滤器
JFileChooser fc=new JFileChooser();
fc.setDialogTitle("保存文件");
MyFileFilter txtFilter = new MyFileFilter(".txt", "txt 文件 (*.txt)");
fc.addChoosableFileFilter(txtFilter);
最后处理返回的文件对象
int fresult;
fresult = fc.showSaveDialog(fc);
if (fresult == JFileChooser.APPROVE_OPTION) { // 用户点击了“确定”按钮
File file = fc.getSelectedFile(); //获得文件名
// 获得被选中的过滤器
MyFileFilter filter = (MyFileFilter)fc.getFileFilter();
// 获得过滤器的扩展名
String ends = filter.getEnds();
File newFile = null;
if (file.getAbsolutePath().toUpperCase().endsWith(ends.toUpperCase())) {
// 如果文件是以选定扩展名结束的,则使用原名
newFile = file;
System.out.println("路径:"+newFile.getAbsolutePath());
} else {
// 否则加上选定的扩展名
newFile = new File(file.getAbsolutePath() + ends);
System.out.println("路径:"+newFile.getAbsolutePath());
}
//使用处理后的newFile文件对象
评论一下
赞助本站
版权申明:此文如未标注转载均为本站原创,自由转载请表明出处《IT技术宅》。
本文网址:https://www.ilt.me/dmfx/50.html