黑马程序员_File练习题(写了后两道,前面两道过于简单)

image.png

package io_;  
  
import java.io.File;  
  
public class hw02 {  
    public static void main(String[] args) {  
        File file = new File("E:\\00生活\\07超级个体\\古典·《超级个体》(完结)\\01丨职业展望(共25讲)");  
        System.out.println(getLen(file)/1024/1024);  
  
    }  
    public static long getLen(File src){  
        //1. 定义变量进行累加  
        long len = 0;  
  
        //2. 创建文件  
        File[] files = src.listFiles();  
        //3. 遍历文件  
        for (File file : files) {  
            if(file.isFile()){  
                len += file.length();  
            }else {  
                len += getLen(file);  
            }  
        }  
        //4. 返回  
        return len;  
    }  
}

作业2

image.png

package io_;  
  
import java.io.File;  
import java.util.HashMap;  
import java.util.Map;  
import java.util.Set;  
  
public class hw03 {  
    public static void main(String[] args) {  
        File file = new File("E:\\00生活\\07超级个体\\古典·《超级个体》(完结)\\01丨职业展望(共25讲)");  
        /*  
        使用HashMap来统计文件数  
        a.txt        a.a.a.txt -> key:关键提取.txt 每次可以提取一次就count+1  
         */        HashMap<String, Integer> count = getCount(file);  
        System.out.println(count);  
    }  
  
    public  static HashMap<String, Integer> getCount(File src){  
        //用来计数  
        int count = 0;  
        //键:存储文本类型 值:文本类型的个数  
        HashMap<String, Integer> hm = new HashMap<>();  
        File[] files = src.listFiles();  
        //遍历每个文件  
        for (File file : files) {  
            //如果是文件  
            if(file.isFile()){  
                String name = file.getName();  
                //获得以.为分割的字符串数组  
                String[] arr = name.split("\\.");  
                //如果分割长度为1,说明数组内没有以.分割的字符串 比如aaa  
                //如果是aaa.txt 那么数组就是2  
                if(arr.length > 1){  
                    String genre = arr[arr.length - 1];  
                    //hm原本存在类型,则导出count+1导入,如果不存在那么直接导入  
                    if(hm.containsKey(genre)){  
                        Integer integer = hm.get(genre);  
                        hm.put(genre, integer+1);  
                    }else{  
                        hm.put(genre, 1);  
                    }  
                }  
            }  
            //如果不是文件  
            else{//递归后返回一个HashMap,从HashMap中对相应的值添加或者出现新的直接添加  
                HashMap<String, Integer> sonMap = getCount(file);  
                Set<Map.Entry<String, Integer>> entries = sonMap.entrySet();  
                for (Map.Entry<String, Integer> entry : entries) {  
                    String key = entry.getKey();  
                    Integer value = entry.getValue();  
                    //如果是重复出现的类型  
                    if(hm.containsKey(key)){  
                        Integer integer = hm.get(key);  
                        hm.put(key,integer + value);  
                    }else{//如果不是  
                        hm.put(key,value);  
                    }  
                }  
            }  
  
        }  
        return hm;  
    }  
}
  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值