public static void main(String[] args) {
File file = new File("E:\\download");
MyFileTypeFilter filter = new MyFileTypeFilter();
fun5(file,filter);
System.out.println("doc 的类型的文件有:" + MyFileTypeFilter.docCount);
System.out.println("java 的类型的文件有:" + MyFileTypeFilter.javaCount);
System.out.println("txt 的类型的文件有:" + MyFileTypeFilter.txtCount);
System.out.println("txt 的类型的文件有:" + MyFileTypeFilter.jpgCount);
}
/**
* 5.键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key,
* 用个数作为value,放入到map集合中,并用两种方式遍历map集合
* 例如:
* doc 的类型的文件有 3 个
* java 的类型的文件有 5 个
* txt 的类型的文件有 7 个
*/
public static void fun5(File file , MyFileTypeFilter filter){
File[] files = file.listFiles(filter);
for (File f:
files) {
if (f.isDirectory()) {
fun5(f,filter);
}
}
}
// 文件类型过滤器类
public class MyFileTypeFilter implements FileFilter {
public static int javaCount = 0;
public static int docCount = 0;
public static int txtCount = 0;
public static int jpgCount = 0;
@Override
public boolean accept(File pathname) {
String fileName = pathname.getName();
if (fileName.endsWith(".java")) {
javaCount = javaCount + 1;
}
if (fileName.endsWith(".txt")) {
docCount = docCount + 1;
}
if (fileName.endsWith(".doc")) {
txtCount = txtCount + 1;
}
if (fileName.endsWith(".jpg")) {
jpgCount = jpgCount + 1;
}
return true;
}
}