java swing 选择文件夹_Java Swing JFileChooser保存文件时根据选择的文件类型自动添加后缀名...

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值