黑马程序员技术交流社区

标题: 获取指定文件夹下 后缀名种的类及其个数 [打印本页]

作者: 431613758    时间: 2016-9-19 12:36
标题: 获取指定文件夹下 后缀名种的类及其个数
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");
                }
        }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2