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())    方式返回字符串。

    原因如下:

  • 相关阅读:
    隐式类型转换
    STL::allocator rebind
    Proxy Class(代理类)
    C++ 没有合适的默认构造函数(无参数构造函数)
    E
    C
    Multiplication Puzzle POJ
    Brackets POJ
    Halloween Costumes LightOJ
    ACwing 139. 回文子串的最大长度(二分+Hash)
  • 原文地址:https://www.cnblogs.com/liaojie970/p/4872132.html
Copyright © 2011-2022 走看看