【java】遞歸統計本地磁盤所有文件,提取重復文件,JDK8 map叠代
阿新 • • 發佈:2017-07-18
this ash down logs out 文件名 pub new 重復
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 = newTreeMap<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)); } } //計算文件夾下所有文件總數 publicvoid 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叠代