java递归统计本地磁盘所有文件,提取重复文件,JDK8 map迭代

Posted Angel挤一挤

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);
            }
            
            
        }
    }
}
 

 

以上是关于java递归统计本地磁盘所有文件,提取重复文件,JDK8 map迭代的主要内容,如果未能解决你的问题,请参考以下文章

Java File 类 文件的常用操作(递归遍历所有文件,统计文件大小,删除文件)

php 递归读取文件夹内所有文件报错

用java 读取本地磁盘下的一个txt文件

python可以同步本地磁盘文件的字典

如何通过简单的java代码读取本地磁盘目录下的所有文件或者文件夹?

利用java.io.File类实现遍历本地磁盘上指定盘符或文件夹的所有的文件