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 类 文件的常用操作(递归遍历所有文件,统计文件大小,删除文件)