zoukankan      html  css  js  c++  java
  • 【java】递归统计本地磁盘所有文件,提取重复文件,JDK8 map迭代

    package com.sxd.createDao;
    
    import java.io.File;
    import java.time.LocalDateTime;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.TreeMap;
    
    
    
    public class Test {
        
        private long a = 0;
        Map<String, File> map = new HashMap<String, File>();
        Map<String, String> repeatMap = new TreeMap<String ,String>();
        @org.junit.Test
        public void test() {
            System.out.println(LocalDateTime.now());
            //本机磁盘上所有文件
            File [] files = File.listRoots();
            for (File file : files) {
                num(file);
            }
    //        num(new File("D:/BaiduYunDownload"));  //单个文件夹下
            
            System.out.println("计算机文件总数:"+a);
            System.out.println(LocalDateTime.now());
            if(repeatMap.size() > 0){
                repeatMap.forEach((k,v)->System.out.println("文件路径:"+k+"  文件名:"+v));
            }
            
            
        }
        
        
        
        //计算文件夹下所有文件总数
        public  void num(File file){
            if(file.isDirectory()){
                File [] files = file.listFiles();
                if(files != null){
                    for (File string : files) {
                        num(string);
                    }
                }
            }else{
                a++;
                if(map.containsKey(file.getName())){
                    File thisFile = map.get(file.getName());
                    if(file.getTotalSpace() == thisFile.getTotalSpace()){
                        repeatMap.put(file.getPath() , file.getName());
                        repeatMap.put(thisFile.getPath(),thisFile.getName());
                    }
                }else{
                    map.put(file.getName(),file);
                }
                
                
            }
        }
    }
     
  • 相关阅读:
    js上传照片本地预览
    2020年6月23日第一次面试题(外派PA)
    笔记
    2020VUE系统回顾与学习
    2019最全前端面试问题及答案总结
    常见的浏览器兼容性问题总结
    Vue咖啡app项目总结
    跨域问题研究总结
    Class.forName()用法及与new区别
    反射
  • 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/7200928.html
Copyright © 2011-2022 走看看