import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/*
* 获取E:\\kaoShiTest目录下所有文件的后缀名,并统计后缀名对应的文件个数,将这些文件的后缀名和对应的文件个数进行拼接,
* 并将拼接的结果写到result.txt中。
result.txt中数据的格式如下:xls:2; doc:1; mp3:7; docx:1; txt:4;
* */
public class Ti2 {
public static void main(String[] args) {
File f = new File("D:\\课件\\zzzzzz\\aa");
Set<String> set = new HashSet<String>();
//1. 递归 遍历 获取后缀名 存到Set集合中
m1(f,set);
//2. 存入List集合 让每个后缀名有索引
List<String> m = new ArrayList<String>();//后缀名
for (String s : set) {
m.add(s);
}
//3. 用 b1代替变量 作为计数器 每次增加其length (b1 改成数组更简单 )
List<String> bl = new ArrayList<String>();//对应的变量
for (int i = 0; i < set.size(); i++) {
String s = "";
bl.add(s);
}
//4. 调用方法
m2(f,m,bl);
show(m,bl);//show方法 把结果按照规定格式打印到控制台
}
//递归 遍历 获取后缀名 存到Set集合中
private static void m1(File f,Set<String> set) {
File[] listf = f.listFiles();
for (File file : listf) {
if (file.isDirectory()) {
m1(file,set);
}else{
String name = file.getName();
name = "PropertiesDemo.java";
String[] arr = name.split("\\.");// . 必须使用转义字符 不然报错!!!
set.add(arr[(arr.length-1)]);
}
}
}
//用 b1代替变量 作为计数器
public static void m2(File f,List<String> m,List<String> bl){
File[] listf = f.listFiles();
for (File file : listf) {
if (file.isDirectory()) {
m2(file,m,bl);
}else{
String name = file.getName();
for (int i = 0; i < m.size(); i++) {
if (name.endsWith(m.get(i))) {
bl.set(i,bl.get(i)+"a");
}
}
}
}
}
//打印
public static void show(List<String> m,List<String> bl){
for (int i = 0; i < m.size(); i++) {
System.out.println(m.get(i)+":"+bl.get(i).length()+";\t");
}
}
} |
|