在导出文件的时候经常用到筛选xls,txt等文件,如何实现?
JFileChooser saveDialog = new JFileChooser();
saveDialog.setAcceptAllFileFilterUsed(false);
saveDialog.addChoosableFileFilter(new ExcelFileFilter("xls"));//过滤啥类型关键在这里
if (filename != null && !"".equals(filename)) {
saveDialog.setSelectedFile(new File(filename));
}
int result = saveDialog.showSaveDialog(null);
if (result == JFileChooser.APPROVE_OPTION) {
System.out.println("导出文件保存路径:\n" + saveDialog.getSelectedFile().getAbsolutePath());
filePath = saveDialog.getSelectedFile().getAbsolutePath().substring(0,saveDialog.getSelectedFile().getAbsolutePath().lastIndexOf("\\")+1);
return saveDialog.getSelectedFile().getAbsolutePath();
} else {
return null;
}
自定义的过滤文件,以后直接用
private static class TempFileFilter extends FileFilter {
private String ext;
TempFileFilter(String ext) {
this.ext = ext;
}
public boolean accept(File file) {
if (file.isDirectory()) {
return true;
}
String fileName = file.getName();
int index = fileName.lastIndexOf('.');
if (index > 0 && index < fileName.length() - 1) {
String extension = fileName.substring(index + 1).toLowerCase();
if (extension.equals(ext)) {
return true;
}
}
return false;
}
public String getDescription() {
if (ext.equals("txt")) {
return "Microsoft 文件(*.txt)";
}
return "";
}
}
private static class ExcelFileFilter extends FileFilter {
private String ext;
ExcelFileFilter(String ext) {
this.ext = ext;
}
public boolean accept(File file) {
if (file.isDirectory()) {
return true;
}
String fileName = file.getName();
int index = fileName.lastIndexOf('.');
if (index > 0 && index < fileName.length() - 1) {
String extension = fileName.substring(index + 1).toLowerCase();
if (extension.equals(ext)) {
return true;
}
}
return false;
}
public String getDescription() {
if (ext.equals("xls")) {
return "Microsoft Excel文件(*.xls)";
}
return "";
}
}