IT技术宅

青春是一个充满活力的季节,即便是我们失去了天使的翅膀,只要我们还有一颗青春的心,那么我们的生活依然能够如阳光般灿烂!......
现在位置:首页 > 代码分享 > Java Swing JFileChooser保存文件时根据选择的文件类型自动添加后缀名

Java Swing JFileChooser保存文件时根据选择的文件类型自动添加后缀名

刘振兴     代码分享      2015年11月01日     2807     暂无评论  

最近做的一个聊天室的小项目,想保存聊天的日志文件,遇到了些问题,设置了文件类型过滤,填写文件名后不会自动加上后缀,以下为该问题的解决方案

首先、定义一个自己的文件扩展名过滤器 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技术宅
 挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论