• java 对比文件 md5实现秒传


    java如何完成文件秒传?

    a、利用 redis 的 set 方法存放文件上传状态,其中 key 为文件上传的 md5,value 为是否上传完成的标志位;

    b、当标志位为 true 表示上传已经完成,此时如果有相同文件上传,则进入秒传逻辑。如果标志位为 false,则说明还没上传完成,此时需要再调用 set 方法,保存块号文件记录的路径,其中 key 为上传文件的 md5 + 一个固定前缀,value 为块号文件的记录路径

    如何实现md5对比呢?
    代码示例:

    import java.io.FileInputStream;
    import java.security.MessageDigest;
    
    public class FileMD5Comparison {
        public static void main(String[] args) {
            String file1Path = "path/to/your/file1"; // 第一个文件的路径
            String file2Path = "path/to/your/file2"; // 第二个文件的路径
    
            try {
                String file1MD5 = calculateMD5(file1Path);
                String file2MD5 = calculateMD5(file2Path);
    
                System.out.println("MD5 of File 1: " + file1MD5);
                System.out.println("MD5 of File 2: " + file2MD5);
    
                if (file1MD5.equals(file2MD5)) {
                    System.out.println("Files are identical.");
                } else {
                    System.out.println("Files are different.");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public static String calculateMD5(String filePath) throws Exception {
            MessageDigest md = MessageDigest.getInstance("MD5");
            FileInputStream fis = new FileInputStream(filePath);
            byte[] dataBytes = new byte[1024];
    
            int bytesRead;
            while ((bytesRead = fis.read(dataBytes)) != -1) {
                md.update(dataBytes, 0, bytesRead);
            }
    
            byte[] mdBytes = md.digest();
    
            StringBuilder sb = new StringBuilder();
            for (byte mdByte : mdBytes) {
                sb.append(Integer.toString((mdByte & 0xff) + 0x100, 16).substring(1));
            }
    
            return sb.toString();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
  • 相关阅读:
    cookie和session区别
    视频监控/安防监控/视频云存储EasyCVR平台设备分配模块升级详解
    Codeforces Round #804 (Div. 2)
    嵌入式系统开发笔记103:解决DEV C++程序运行中文乱码问题
    WPF--在后台执行Command指令
    URP渲染管线场景优化实战 2.2静态资源导入及优化——Model
    Nginx配置文件及Nginx服务优化
    STM32建立工程问题汇总
    C语言三大结构
    带有 Vagrant 和 Virtualbox 的 Elasticsearch 集群
  • 原文地址:https://blog.csdn.net/u010720890/article/details/133979267