一个没有经过优化的过滤指定目录下的指定扩展名文件的算法
/**过滤符合扩展名条件的文件*/
static File[] listHtmls(File file){
File[] fs = file.listFiles(new FileFilter() {
@Override
public boolean accept(File f) {
return compareExtension(f);
}
});
File[] dirs = file.listFiles(new FileFilter() {
@Override
public boolean accept(File f) {
return f.isDirectory();
}
});
for(File dir:dirs){
File[] fs2 = listHtmls(dir);
int len = fs.length;
fs = Arrays.copyOf(fs, fs.length+fs2.length);
System.arraycopy(fs2, 0, fs, len, fs2.length);
}
return fs;
}
抽取出来通用的算法
static File[] listFiles(File dir,final String ex){
File[] fs = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File f) {
return f.getName().endsWith(ex);
}
});
File[] dirs = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File f) {
return f.isDirectory();
}
});
for(File directory : dirs){
int len = fs.length;
File[] ffs = listFiles(directory, ex);
fs = Arrays.copyOf(fs, fs.length+ffs.length);
System.arraycopy(ffs, 0, fs, len, ffs.length);
}
return fs;
}
浙公网安备 33010602011771号