import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.apache.commons.io.FilenameUtils;
/*
*需求:获取一个目录下所有文件的后缀名,计算共有多少后缀名,并获取每种后缀名含有多少个文件
*分析:1.遍历目录获取所有文件
*/
public class Demo02 {
private static ArrayList<String> list = new ArrayList<>();
private static Map<String,Integer> map = new HashMap<>();
public static void main(String[] args) {
//选择根目录
File root = new File("D:\\daima\\day01");
//使用递归遍历目录,获得所有文件的后缀名,并用字符串接收
//listFile(root);
//将遍历的文件后缀名添加到集合中
list =getList(root);
System.out.println(list.get(5));
//传入一个字符串,生成一个map集合
map = getMap(list);
//System.out.println(map);
//遍历map集合打印元素
listMap(map);
}
private static void listMap(Map<String, Integer> map) {
// TODO Auto-generated method stub
Set<String> keys = map.keySet();
for(String k:keys){
System.out.println("k="+k+"\t"+"v="+"("+map.get(k)+")");
}
}
private static Map<String, Integer> getMap(ArrayList<String> list) {
int a =0;
if(list != null){
for(int x=0;x<list.size();x++){
for(int y=0;y<list.size();y++){
if(list.get(x)== list.get(y)){
a++;
}
}
//
if(!map.containsKey(list.get(x))){
map.put(list.get(x), a);
}
}
}
//System.out.println(map);
return map;
}
private static ArrayList<String> getList(File dir) {
//获取目录下所有文件的File数组
File[] fileArray =dir.listFiles();
//遍历目录
if(fileArray != null){
for(File f:fileArray){
if(f.isFile()){
String s=FilenameUtils.getExtension(f.toString());
//System.out.println(s);
list.add(s);
}else if(f.isDirectory()){
getList(f);
}
}
}
//System.out.println(list);
return list;
}
/*private static void listFile(File dir) {
//获取目录下所有文件的File数组
File[] fileArray =dir.listFiles() ;
//遍历目录
if(fileArray != null){
for(File f:fileArray){
if(f.isFile()){
String s=FilenameUtils.getExtension(f.toString());
//System.out.println(s);
}else if(f.isDirectory()){
listFile(f);
}
}
}
}*/
}
|
|