62,615
社区成员
发帖
与我相关
我的任务
分享
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;
}
}
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);
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 完成保存文件的操作
}