java 進行檔案的crc校驗
阿新 • • 發佈:2018-12-15
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(); } }