//普通输入流读取文件内容
public static longchecksumInputStream(Path filename)
{try(InputStream in=Files.newInputStream(filename))
{
CRC32 crc=newCRC32();intc;while ((c=in.read())!=-1)
{
crc.update(c);
}returncrc.getValue();
}catch(IOException e) {//TODO Auto-generated catch block
e.printStackTrace();return 0;
}
}//带有缓冲读取文件
public static longcheckSumBufferedInputStream(Path filename)
{try(InputStream in=newBufferedInputStream(Files.newInputStream(filename)))
{
CRC32 crc=newCRC32();intc;while ((c=in.read())!=-1)
{
crc.update(c);
}returncrc.getValue();
}catch(IOException e) {//TODO Auto-generated catch block
e.printStackTrace();
}return 0;
}//随机读取文件
public static longchecksumRandomAccessFile(Path filename)
{try(RandomAccessFile file=new RandomAccessFile(filename.toFile(), "r"))
{long length=file.length();
CRC32 crc=newCRC32();for (int i = 0; i < length; i++) {
file.seek(i);int c=file.readByte();
crc.update(c);
}returncrc.getValue();
}catch(FileNotFoundException e) {//TODO Auto-generated catch block
e.printStackTrace();
}catch(IOException e) {//TODO Auto-generated catch block
e.printStackTrace();
}return 0;
}//通过磁盘映射读取文件
public static longchecksumMappedFile(Path filename)
{try(FileChannel channel=FileChannel.open(filename))
{
CRC32 crc=newCRC32();int length=(int)channel.size();
MappedByteBuffer buffer= channel.map(FileChannel.MapMode.READ_ONLY, 0, length);for (int i = 0; i
{int c=buffer.get(i);
crc.update(c);
}returncrc.getValue();
}catch(IOException e) {//TODO Auto-generated catch block
e.printStackTrace();
}return 0;
}