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

简介: package com.sxd.createDao;import java.io.File;import java.time.LocalDateTime;import java.util.HashMap;import java.
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);
            }
            
            
        }
    }
}
 

 

相关文章
|
1月前
|
Java Unix Go
【Java】(8)Stream流、文件File相关操作,IO的含义与运用
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。!但本节讲述最基本的和流与 I/O 相关的功能。我们将通过一个个例子来学习这些功能。
159 1
|
4月前
|
监控 Java API
Java语言按文件创建日期排序及获取最新文件的技术
这段代码实现了文件创建时间的读取、文件列表的获取与排序以及获取最新文件的需求。它具备良好的效率和可读性,对于绝大多数处理文件属性相关的需求来说足够健壮。在实际应用中,根据具体情况,可能还需要进一步处理如访问权限不足、文件系统不支持某些属性等边界情况。
252 14
|
4月前
|
存储 Java 编译器
深入理解Java虚拟机--类文件结构
本内容介绍了Java虚拟机与Class文件的关系及其内部结构。Class文件是一种与语言无关的二进制格式,包含JVM指令集、符号表等信息。无论使用何种语言,只要能生成符合规范的Class文件,即可在JVM上运行。文章详细解析了Class文件的组成,包括魔数、版本号、常量池、访问标志、类索引、字段表、方法表和属性表等,并说明其在Java编译与运行过程中的作用。
134 0
|
4月前
|
存储 人工智能 Java
java之通过Http下载文件
本文介绍了使用Java实现通过文件链接下载文件到本地的方法,主要涉及URL、HttpURLConnection及输入输出流的操作。
300 0
|
5月前
|
存储 Java 数据安全/隐私保护
Java技术栈揭秘:Base64加密和解密文件的实战案例
以上就是我们今天关于Java实现Base64编码和解码的实战案例介绍。希望能对你有所帮助。还有更多知识等待你去探索和学习,让我们一同努力,继续前行!
467 5
|
5月前
|
网络协议 安全 Java
实现Java语言的文件断点续传功能的技术方案。
像这样,我们就完成了一项看似高科技、实则亲民的小工程。这样的技术实现不仅具备实用性,也能在面对网络不稳定的挑战时,稳稳地、不失乐趣地完成工作。
328 0
|
6月前
|
安全 Java API
【Java性能优化】Map.merge()方法:告别繁琐判空,3行代码搞定统计累加!
在日常开发中,我们经常需要对Map中的值进行累加统计。}else{代码冗长,重复调用get()方法需要显式处理null值非原子操作,多线程下不安全今天要介绍的方法,可以让你用一行代码优雅解决所有这些问题!方法的基本用法和优势与传统写法的对比分析多线程安全版本的实现Stream API的终极优化方案底层实现原理和性能优化建议一句话总结是Java 8为我们提供的Map操作利器,能让你的统计代码更简洁、更安全、更高效!// 合并两个列表});简单累加。
628 0
|
5月前
|
安全 Java 数据库连接
让我们讲解一下 Map 集合遍历的方式
我是小假 期待与你的下一次相遇 ~
227 43
使用 entrySet 遍历 Map 类集合 KV
使用 entrySet 遍历 Map 类集合 KV
|
存储 前端开发 API
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
该文章详细介绍了ES6中Set和Map数据结构的特性和使用方法,并探讨了它们在前端开发中的具体应用,包括如何利用这些数据结构来解决常见的编程问题。
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用