首页 > 编程语言 >java代码参考

java代码参考

时间:2024-12-27 11:08:00浏览次数:7  
标签:java String 参考 代码 fileHashes File directory import

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.Map;

public class DuplicateFileFinder {

    public static void main(String[] args) throws IOException, NoSuchAlgorithmException {
        String directoryPath = "your/directory/path";
        File directory = new File(directoryPath);

        // 使用 HashMap 存储文件的哈希值和路径
        Map<String, String> fileHashes = new HashMap<>();

        // 遍历目录中的文件
        findDuplicateFiles(directory, fileHashes);
    }

    // 遍历文件夹,递归查找文件
    public static void findDuplicateFiles(File directory, Map<String, String> fileHashes) throws IOException, NoSuchAlgorithmException {
        if (directory.isDirectory()) {
            // 获取目录中的所有文件
            File[] files = directory.listFiles();
            for (File file : files) {
                findDuplicateFiles(file, fileHashes); // 递归调用,遍历子目录
            }
        } else {
            // 对每个文件计算哈希值并比较
            String fileHash = calculateFileHash(directory);
            if (fileHashes.containsKey(fileHash)) {
                System.out.println("重复文件:" + directory.getAbsolutePath() + " 和 " + fileHashes.get(fileHash));
            } else {
                fileHashes.put(fileHash, directory.getAbsolutePath());
            }
        }
    }

    // 计算文件的哈希值
    public static String calculateFileHash(File file) throws IOException, NoSuchAlgorithmException {
        MessageDigest md = MessageDigest.getInstance("SHA-256");
        FileInputStream fis = new FileInputStream(file);
        byte[] byteArray = new byte[1024];
        int bytesRead;

        while ((bytesRead = fis.read(byteArray)) != -1) {
            md.update(byteArray, 0, bytesRead);
        }

        byte[] digest = md.digest();
        StringBuilder sb = new StringBuilder();

        for (byte b : digest) {
            sb.append(String.format("%02x", b));
        }
        fis.close();

        return sb.toString();
    }
}

  

标签:java,String,参考,代码,fileHashes,File,directory,import
From: https://www.cnblogs.com/xmyfsj/p/18635169

相关文章

  • 代码随想录算法训练营第五十九天|dijkstra(堆优化版)精讲、Bellman_ford
    前言打卡代码随想录算法训练营第49期第五十九天⚆_⚆(˘❥˘)(•̀⌓•)シ(人•͈ᴗ•͈)♡♡首先十分推荐学算法的同学可以先了解一下代码随想录,可以在B站卡哥B站账号、代码随想录官方网站代码随想录了解,卡哥清晰易懂的算法教学让我直接果断关注,也十分有缘和第49期的......
  • Java编程规范-processXXX()和handleXXX()的区别
    Java编程规范类名、接口名:类名和接口名应该是名词,首字母大写,采用驼峰命名法。例如:CustomerData,OrderProcessor。方法名:方法名应该是动词,首字母小写,采用驼峰命名法。例如:calculateTotal,processOrder。变量名:变量名应该清晰、描述性强,首字母小写,采用驼峰命名法。例如:customer......
  • Java 流程控制语句(Control Flow)
    选择意味着取舍——Miao酱程序设计中有三种流程结构,即:顺序结构程序从上到下逐行地执行,中间没有任何判断和跳转。分支结构根据判断条件,选择性地执行某段代码。有if…else和switch-case两种分支语句。循环结构根据循环条件,重复性的执行某段代码。有for、while、do......
  • Java 数组
    1.何为数组(Array)定义:数组是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,通过数组下标或索引的方式对这些数据进行统一管理。例如全班同学的数学成绩就可以构成一个数组。特点:数组属于引用数据类型,而数组中的元素可以是任何数据类型,包括基本数据类型和引用数据......
  • 前端面试题合集(一)——HTML/CSS/Javascript/ES6
    前端经典面试题总结前端开发领域涵盖了大量的知识点,面试中的经典问题通常集中在HTML、CSS、JavaScript及ES6等基础技能上。以下是针对这些知识点的一些总结:1.HTMLHTML是Web页面结构的基础,它定义了网页的内容和结构。面试中的HTML问题常常涉及到常见标签的使用......
  • 说说你对代码可读性的理解
    代码可读性在前端开发中是一个至关重要的概念。它涉及到如何编写和组织代码,以便其他开发者(或未来的自己)能够轻松理解、维护和扩展代码。以下是我对代码可读性的理解:清晰的命名:变量、函数和类的命名应清晰明了,能够准确反映其用途。避免使用过于简短或含糊的名字,而应选择具有描述......
  • 你学习javascript的路线是怎样的?
    学习JavaScript(特别是针对前端开发)的路线可以因人而异,但以下是一个建议的学习路径,帮助你从基础到进阶,再到深入掌握JavaScript和前端开发技术:阶段一:基础学习JavaScript基础语法:变量、数据类型(Number,String,Boolean,Object,Null,Undefined等)运算符(算术、比较、逻辑、位......
  • 低代码开发解决哪些问题?
    低代码开发主要解决了以下问题,特别是在前端开发方面:提高开发效率:低代码开发通过提供可视化的界面和预先构建的组件库,显著减少了开发人员编写代码的时间和工作量。开发人员可以通过拖放和配置的方式快速搭建应用程序,从而专注于业务逻辑和用户体验,而无需过多关注底层技术实现。这......
  • 【Java 代码审计入门-02】SQL 漏洞原理与实际案例介绍
    SQL注入漏洞全解析发布日期:2024年12月26日引言在互联网的快速发展的今天,Web应用的安全性变得越来越重要。SQL注入(SQLInjection,简称SQLi)作为最常见的Web安全漏洞之一,给无数网站和应用程序带来了巨大的风险。本文将深入探讨SQL注入的原理、危害以及如何有效防范。什么是S......
  • 【Java 代码审计入门-03】XSS 漏洞原理与实际案例介绍
    【Java代码审计入门-03】XSS漏洞原理与实际案例介绍写在前面为什么会有这一系列的文章呢?因为我发现网上缺乏成系统的Java代码审计教程,大多是分散的点。对于新人来说,这样的资源可能不够友好。加上本人也在学习Java审计,希望通过记录和总结自己的学习历程,帮助到更多的人。因此......