117.info
人生若只如初见

java解压命令如何进行文件校验

?Java?,?????java.util.zip?????????????????????????,???????Java??ZIP????????????

import java.io.*;
import java.util.zip.*;

public class UnzipAndVerify {

    public static void main(String[] args) {
        String zipFilePath = "path/to/your/zipfile.zip";
        String destDirectory = "path/to/your/destination/directory";
        String expectedChecksum = "expected_checksum_value"; // ??MD5?SHA-1???????????

        try {
            // ????
            unzip(zipFilePath, destDirectory);

            // ???????????
            String actualChecksum = calculateChecksum(destDirectory + File.separator + "your_file_to_verify");

            // ?????
            if (expectedChecksum.equals(actualChecksum)) {
                System.out.println("??????!");
            } else {
                System.out.println("??????!");
            }
        } catch (IOException | NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }

    public static void unzip(String zipFilePath, String destDirectory) throws IOException {
        File destDir = new File(destDirectory);
        if (!destDir.exists()) {
            destDir.mkdir();
        }

        ZipInputStream zipIn = new ZipInputStream(new FileInputStream(zipFilePath));
        ZipEntry entry = zipIn.getNextEntry();

        while (entry != null) {
            String filePath = destDirectory + File.separator + entry.getName();
            if (!entry.isDirectory()) {
                extractFile(zipIn, filePath);
            } else {
                File dir = new File(filePath);
                dir.mkdirs();
            }
            zipIn.closeEntry();
            entry = zipIn.getNextEntry();
        }
        zipIn.close();
    }

    public static void extractFile(ZipInputStream zipIn, String filePath) throws IOException {
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));
        byte[] bytesIn = new byte[4096];
        int read = 0;
        while ((read = zipIn.read(bytesIn)) != -1) {
            bos.write(bytesIn, 0, read);
        }
        bos.close();
    }

    public static String calculateChecksum(String filePath) throws IOException, NoSuchAlgorithmException {
        MessageDigest md = MessageDigest.getInstance("MD5"); // ???SHA-1???
        FileInputStream fis = new FileInputStream(filePath);
        byte[] buffer = new byte[1024];
        int bytesRead;
        while ((bytesRead = fis.read(buffer)) != -1) {
            md.update(buffer, 0, bytesRead);
        }
        fis.close();
        byte[] digest = md.digest();
        StringBuilder sb = new StringBuilder();
        for (byte b : digest) {
            sb.append(String.format("x", b));
        }
        return sb.toString();
    }
}

?????,??????ZIP??,??????????MD5??????,????????????????????????????,????????;??,??????????,???????????zipFilePath?destDirectory?expectedChecksum?????

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe2aaAzsKAw5VAV0.html

推荐文章

  • java中异常类会影响性能吗

    在Java中,异常类本身不会对性能产生显著影响。异常处理机制是为了在程序运行时处理错误或异常情况,而不是为了优化性能。然而,在使用异常时,需要注意以下几点...

  • java中异常类如何避免

    在Java中,避免异常的最好方法是编写健壮的代码并遵循一些最佳实践。以下是一些建议: 预期和处理异常:使用try-catch语句来捕获和处理可能发生的异常。确保处理...

  • java中异常类有哪些常见类型

    Java中的异常类主要分为两大类:受检异常(Checked Exceptions)和非受检异常(Unchecked Exceptions)。以下是具体的异常类型:
    受检异常(Checked Except...

  • java中异常类怎么捕获

    在Java中,我们使用try-catch语句来捕获异常。当程序执行过程中遇到异常时,Java运行时系统会抛出一个异常对象。你可以使用try块来包含可能引发异常的代码,然后...

  • java解压命令支持哪些操作系统

    Java解压命令主要依赖于Java标准库中的java.util.zip包,因此,它在所有支持Java的平台上都是可用的,包括Windows、macOS和Linux。以下是不同操作系统下使用Java...

  • php swoole协程如何处理并发请求

    Swoole 是一款高性能的 PHP 异步编程框架,它支持协程并发处理请求。要使用 Swoole 处理并发请求,请按照以下步骤操作: 安装 Swoole 扩展:
    在命令行中运行...

  • php和linux怎样进行资源管理

    在Linux系统中,PHP资源的有效管理对于确保服务器性能和稳定性至关重要。以下是一些关键的管理策略和实践:
    1. 资源监控 top/htop: 实时监控系统资源使用情...

  • php和linux有哪些监控工具

    对于PHP和Linux的监控工具,以下是一些推荐选项:
    PHP监控工具 New Relic:一个全面的应用程序性能管理平台,可以监控PHP应用程序的性能指标,并提供实时警...