JFileChooser 保存文件时根据选择的文件类型改变文件后缀名

来源:互联网 发布:cf按键精灵自瞄源码 编辑:程序博客网 时间:2024/05/29 13:47
第一、定义一个自己的文件扩展名过滤器 MyFileFilter:
Java code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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;
  }
}

第二、为保存文件对话框添加自定义的扩展名过滤器:
Java code
?
1
2
3
4
5
6
txtFilter = new MyFileFilter(".txt""txt 文件 (*.txt)");
savFilter = new MyFileFilter(".sav""sav 文件 (*.sav)");
docFilter = new MyFileFilter(".doc""doc 文件 (*.doc)");
fileChooser.addChoosableFileFilter(txtFilter);
fileChooser.addChoosableFileFilter(savFilter);
fileChooser.addChoosableFileFilter(docFilter);

第三、在保存文件对话框返回文件名时,同时取得被选中的扩展名:
Java code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int fresult;
fresult = fileChooser.showSaveDialog(this);
if (fresult == JFileChooser.APPROVE_OPTION) { // 用户点击了“确定”按钮
  File file = fileChooser.getSelectedFile(); //获得文件名
  // 获得被选中的过滤器
  MyFileFilter filter = (MyFileFilter)fileChooser.getFileFilter();
  // 获得过滤器的扩展名
  String ends = filter.getEnds();
  File newFile = null;
  if (file.getAbsolutePath().toUpperCase().endsWith(ends.toUpperCase())) {
    // 如果文件是以选定扩展名结束的,则使用原名
    newFile = file;
  else {
    // 否则加上选定的扩展名
    newFile = new File(file.getAbsolutePath() + ends);
  }
// 以下用 newFile 完成保存文件的操作
}
0 0
原创粉丝点击