欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java计算文件的CRC校验值,java计算crc校验,package com.

来源: javaer 分享于  点击 13465 次 点评:190

java计算文件的CRC校验值,java计算crc校验,package com.


package com.javacodegeeks.snippets.core;import java.io.BufferedInputStream;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.RandomAccessFile;import java.nio.MappedByteBuffer;import java.nio.channels.FileChannel;import java.util.zip.CRC32;public class Main {    public static long checksumInputStream(String filepath) throws IOException {        InputStream inputStreamn = new FileInputStream(filepath);        CRC32 crc = new CRC32();        int cnt;        while ((cnt = inputStreamn.read()) != -1) {            crc.update(cnt);        }        return crc.getValue();    }    public static long checksumBufferedInputStream(String filepath) throws IOException {        InputStream inputStream = new BufferedInputStream(new FileInputStream(filepath));        CRC32 crc = new CRC32();        int cnt;        while ((cnt = inputStream.read()) != -1) {            crc.update(cnt);        }        return crc.getValue();    }    public static long checksumRandomAccessFile(String filepath) throws IOException {        RandomAccessFile randAccfile = new RandomAccessFile(filepath, "r");        long length = randAccfile.length();        CRC32 crc = new CRC32();        for (long i = 0; i < length; i++) {            randAccfile.seek(i);            int cnt = randAccfile.readByte();            crc.update(cnt);        }        return crc.getValue();    }    public static long checksumMappedFile(String filepath) throws IOException {        FileInputStream inputStream = new FileInputStream(filepath);        FileChannel fileChannel = inputStream.getChannel();        int len = (int) fileChannel.size();        MappedByteBuffer buffer = fileChannel.map(FileChannel.MapMode.READ_ONLY, 0, len);        CRC32 crc = new CRC32();        for (int cnt = 0; cnt < len; cnt++) {            int i = buffer.get(cnt);            crc.update(i);        }        return crc.getValue();    }    public static void main(String[] args) throws IOException {        String filepath = "C:/Users/nikos7/Desktop/output.txt";        System.out.println("Input Strea method:");        long start_timer = System.currentTimeMillis();        long crc = checksumInputStream(filepath);        long end_timer = System.currentTimeMillis();        System.out.println(Long.toHexString(crc));        System.out.println((end_timer - start_timer) + " ms");        System.out.println("///////////////////////////////////////////////////////////");        System.out.println("Buffered Input Stream method:");        start_timer = System.currentTimeMillis();        crc = checksumBufferedInputStream(filepath);        end_timer = System.currentTimeMillis();        System.out.println(Long.toHexString(crc));        System.out.println((end_timer - start_timer) + " ms");        System.out.println("///////////////////////////////////////////////////////////");        System.out.println("Random Access File method:");        start_timer = System.currentTimeMillis();        crc = checksumRandomAccessFile(filepath);        end_timer = System.currentTimeMillis();        System.out.println(Long.toHexString(crc));        System.out.println((end_timer - start_timer) + " ms");        System.out.println("///////////////////////////////////////////////////////////");        System.out.println("Mapped File method:");        start_timer = System.currentTimeMillis();        crc = checksumMappedFile(filepath);        end_timer = System.currentTimeMillis();        System.out.println(Long.toHexString(crc));        System.out.println((end_timer - start_timer) + " ms");    }}

输出:

Input Strea method:94ccd63e75 ms///////////////////////////////////////////////////////////Buffered Input Stream method:94ccd63e5 ms///////////////////////////////////////////////////////////Random Access File method:94ccd63e99 ms///////////////////////////////////////////////////////////Mapped File method:94ccd63e8 ms
相关栏目:

用户点评