• 统计一个目录下各种文件类型及个数


    package cn.lyc;

    import java.io.File;
    import java.util.HashMap;
    import java.util.Map;

    public class Ex {
    //建立一个Map 用来存放文件类型和个数
    static Map<String, Integer> map = new HashMap<>();
    public static void main(String[] args) {
    //文件地址
    String name = "C:\Users\86176\Desktop\J";
    //调用方法
    count(new File(name));
    //遍历一遍map的key
    for (String key : map.keySet())
    System.out.printf("%s文件一共有%d个 ",key,map.get(key));
    }
    //递归方法
    public static void count(File file){
    if (file.isDirectory()){
    //public File[] listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名所表示目录中的文件。
    //File[] 数组中存储的是目录中的文件
    File[] files = file.listFiles();
    /**
    * for(元素类型File 元素变量fs : 遍历对象files){
    * 引用了fs的java语句;
    * }
    */
    for (File fs : files){
    if (fs.isDirectory()) count(fs);
    if (fs.isFile()){
    String name = fs.getName();
    String ext = name.substring(name.lastIndexOf("."));
    //如果map中的key含有ext,就把map的value值加1,否则就给map添加一个key值
    /**比如map为{.java = 1},ext的值为.java 那么map 的值就为{.java = 2}
    * 如果map为{.java = 1},ext的值为.txt 那么map中就会多一个键值对 变为{.java = 1,.txt = 1}
    */
    if (map.containsKey(ext)){

    /** map.get(key) 根据key来获取value
    * map.get(ext) ext 就是.java 意思就是获取.java的value
    * 这里.Java的value表示同类型的个数,每发现一个进行加1
    */

    map.put(ext,map.get(ext)+1);
    //System.out.println(map.get(ext));
    }else{
    map.put(ext,1);
    }
    }
    }
    }
    }
    }

    //输出结果:

  • 相关阅读:
    Qt下如何修改文件的时间(全平台修改)
    Qt在windows 平台操作保存execel的表格(通过QAxObject来操作)
    VirtualTreeView控件
    VS2013设置release版本可调试
    工程脚本插件方案
    decode函数
    一个消息调度框架构建
    数据访问模式之Repository模式
    Angular.js Services
    OpenCascade简介
  • 原文地址:https://www.cnblogs.com/liuyunche/p/14313589.html
Copyright © 2020-2023  润新知