【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);
            }

        }
    }
}
 
时间: 2025-01-14 11:16:42

【java】递归统计本地磁盘所有文件,提取重复文件,JDK8 map迭代的相关文章

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

public class FileTest {  public static void main(String[] args) {   //注意:File导 import java.io.File 包   File file = new File("K:\\");   File[] listFiles = file.listFiles();   for (File file2 : listFiles) {    /**打印目录下所有文件以及文件夹 只需要输出file2就行了**/   

案例:Oracle dul数据挖掘 磁盘损坏dul提取数据文件中表的数据及l

通过使用Oracle DUL工具提取损坏磁盘里的数据库文件中的表及lob字段中内容 在有次8i的库恢复中,因为硬盘损坏导致几个表出现很多诡异性坏块,尝试使用dul对其进行挖掘数据,当时使用dul 9 遇到一个难题:当一张表中有lob类型,同时又有varchar2类型,而且varchar2类型数据中包含回车键,使得解决起来很麻烦(因为export_mode=false支持lob,但是不支持字符串含回车;export_mode=true支持字符串含回车,但是不支持lob),最后放弃了对部分数据的挖掘

用户上传本地磁盘中的一个图片文件作为头像

<script type="text/javascript"> //图片上传预览    IE是用了滤镜. function previewImage(file) { var MAXWIDTH  = 180; var MAXHEIGHT = 180; var div = document.getElementById('preview'); if (file.files && file.files[0]) { div.innerHTML ='<img i

Linux 查看磁盘容量、查找大文件、查找大目录

Linux 查看磁盘容量.查找大文件.查找大目录 磁盘统计 查看磁盘使用情况 df -h 文件统计 查找/home 目录下大于800M的文件 find /home -type f -size +800M 查找/home 目录下大于800M的文件,并且使用ls -l 命令输出详细信息 find /home -type f -size +800M -print0|xargs -0 ls -l 查找/home 目录下大约800M的文件,并且使用du -h 命令输出文件的大小 find /home -t

Linux查找并删除重复文件的命令行fdupes工具,dupeGuru图形工具

查了几十个网页,找到这个接近满意的解决方案http://unix.stackexchange.com/questions/146197/fdupes-delete-files-aft... 不过正则里面的叹号好像不能起到清除空行的效果,改为d;fdupes --recurse A/ B/ | sed '/^A/d; /^$/d; s/.*/"&"/' | xargs rm 但还有个小问题,如果A里面有重复的文件,但这文件不在B中,fdupes也是会列为结果,导致误删,要再想想

??Duplicate File Finder Pro mac(重复文件搜索软件)

?Duplicate File Finder Pro mac特别版是Mac平台上的一款好用的重复文件搜索软件,操作简单,使用方便,只需要三步就可以快速查找和删除重复文件,重复文件通常是浪费和不必要的,保持它们只是浪费宝贵的硬盘空间.Duplicate File Finder Pro mac能够轻松的为你的电脑删除隐藏着的重复文件.减轻电脑的内存空间的压力,加快运行速度. ?Duplicate File Finder Pro mac特别版下载路径:http://t.cn/AiYiK0Lw ?Dup

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

2016-11-18 这是本人的第一篇随笔博客,纠结了半天还是选择自己学的时候比较用心的一些知识点上.利用java.io.File类指定本地的文件夹进行遍历所有的文件. package org.lxm.filedemo; import java.io.File; import java.util.Scanner; /* * 本程序是将某个盘的所有文件夹及其文件全部调出来的操作 */ public class FileAllDemo { public static void main(String

基于Flume做FTP文件实时同步到本地磁盘的windows服务。

需求:做一个windows服务,实现从ftp服务器实时下载或者更新文件到本地磁盘. 功能挺简单的.直接写个ftp工具类用定时器跑就能搞定,那我为什么不用呢? 别问,问就是我无聊啊,然后研究一下Flume打发时间.哈哈~ 一.Flume部分 Source组件和Sink组件用的都是第三方. source组件:https://github.com/keedio/flume-ftp-source Sink组件用的谁的目前已经找不到了,网上搜到了一个升级版的. sink组件:https://github.

使用JAVA关联打开本地应用文件

在项目里需要运行本地文件或者应用,JDK6后就新增Desktop类,可以直接使用.这样就可以在程序里可以打开任何应用.比如:打开的是pdf文件,本地默认打开是福昕,程序运行的时候就会使用福昕打开pdf文件. package test; import java.awt.Desktop; import java.io.File; public class DesktopTest { public static void main(String[] args) { //平台是否支持Desktop类 i