zoukankan      html  css  js  c++  java
  • JAVA计算文件的crc32校验码

    import java.io.BufferedInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.zip.CRC32;
    import java.util.zip.CheckedInputStream;
    
    import org.junit.Test;
    
    public class CRCTest {
    
        @Test
        public void testFileCRC() {
            try {
                System.out.println(getCRC32("C:\software.xml"));
                System.out.println(checksumBufferedInputStream("C:\software.xml"));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 采用BufferedInputStream的方式加载文件
         */
        public static long checksumBufferedInputStream(String filepath) throws IOException {
            InputStream inputStream = new BufferedInputStream(new FileInputStream(filepath));
            CRC32 crc = new CRC32();
            byte[] bytes = new byte[1024];
            int cnt;
            while ((cnt = inputStream.read(bytes)) != -1) {
                crc.update(bytes, 0, cnt);
            }
            inputStream.close();
            return crc.getValue();
        }
    
        /**
         * 使用CheckedInputStream计算CRC
         */
        public static Long getCRC32(String filepath) throws IOException {
            CRC32 crc32 = new CRC32();
            FileInputStream fileinputstream = new FileInputStream(new File(filepath));
            CheckedInputStream checkedinputstream = new CheckedInputStream(fileinputstream, crc32);
            while (checkedinputstream.read() != -1) {
            }
            checkedinputstream.close();
            return crc32.getValue();
        }
    }

    注意如果要获取CRC32的getValues返回值的字符串,应该采用:  Long.toHexString(crc32.getValue())    方式返回字符串。

    原因如下:

  • 相关阅读:
    python学习--大数据与科学计算第三方库简介
    养生轴---茶轴
    MobaXterm的安装和使用
    如何解决RIP的问题
    评论博客时注意的地方
    回忆老师教学博客
    助教自我介绍
    《构建之法》读书笔记1
    插入排序
    总结之H3C汇聚层交换机认证在线人数展示系统
  • 原文地址:https://www.cnblogs.com/liaojie970/p/4872132.html
Copyright © 2011-2022 走看看