`

利用java内存映射文件机制实现CRC循环冗余校验

    博客分类:
  • java
阅读更多
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.util.zip.CRC32;
public static void main(String[] args){
try { //对文件进行crc校验
long begin = System.currentTimeMillis();
FileInputStream in = new FileInputStream("code.py");//指定目标文件
FileChannel channel = in.getChannel(); //从文件中获取一个通道
CRC32 crc = new CRC32();
int length = (int)channel.size();
MappedByteBuffer buffer = channel.map(FileChannel.MapMode.READ_ONLY, 0, length); //用只读模式从该通道获取字节缓冲,实现文件到内存的映射
for(int i = 0;i<length;i++)
{
int c = buffer.get(i);
crc.update(c);//按字节做crc
}
System.out.println("crc校验和:"+(Long.toHexString(crc.getValue())).toUpperCase());
long end = System.currentTimeMillis();
System.out.println("运行"+(end-begin)+"ms");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}




运行结果:
crc校验和:4831ACAC

java自1.4以后io机制里多了一个nio包(new I/O),这个包的存在改进了java IO  操作的机制,包括 字符集编码、解码器,非阻塞的I/O,内存映射文件,文件加锁机制,内存映射文件机制类似于操作系统的虚拟内存,它实现了文件到内存的映射,执行效率介于普通文件操作和内存操作之间,适合大文件的读取,和计算.



使用方法很简单:
从文件输入流获取一个‘channel’即通道 传给一个FileChannel
用FileChannel的map方法实现一个文件到内存MappedByteBuffer的字节映射
这样一个从文件到内存的映射机制就建立起来了,接下来就是你要做的内存操作





分享到:
评论

相关推荐

    循环冗余校验码(CRC)计算源代码合集

    循环冗余校验码(CRC,Cyclic Redundancy Check)是一种广泛应用于数据通信和存储领域的错误检测技术。它的基本原理是通过附加一个校验位序列到原始数据中,使得整个数据块能被一个特定的多项式除尽。在接收端,同样...

    基于Matlab的并行循环冗余校验Verilog代码自动生成方法.pdf

    在本篇论文中,研究者们针对水声信号探测数据传输过程中,现场可编程门阵列(FPGA)进行循环冗余校验(CRC)的课题,提出了一个创新性的方法。该方法旨在解决传统串行方法在处理长数据帧时速度不足的问题,同时克服...

    基于crc32实现的内存的代码校验_crc32实现的内存的代码校验_

    CRC32(Cyclic Redundancy Check,循环冗余校验)是一种广泛应用于数据通信和存储领域的错误检测方法。在编程中,CRC32常用于校验数据的完整性和一致性,确保程序在运行时能够正确执行。下面我们将深入探讨CRC32的...

    循环冗余检验(CRC)原理与实现

    ### 循环冗余检验(CRC)原理与实现 #### 1. 前言 ##### 1.1 背景 循环冗余检验(Cyclic Redundancy Check,简称CRC)是一种广泛应用于通信领域中的差错检测技术。CRC通过对发送的数据进行计算并附加一个校验值...

    CRC8/CRC16/CRC32常见几个标准的算法及C语言实现

    总结起来,CRC8、CRC16和CRC32是三种不同宽度的循环冗余校验方法,它们通过查表法在C语言中实现,可以高效地检测数据传输或存储中的错误。CRC8适用于轻量级应用,CRC16提供更强的保护,而CRC32则广泛应用于高可靠性...

    matlab说话代码-ECC-Verilog-HDL-AutoGenerator:循环冗余校验(一种纠错码)软件(MATLAB)和硬件(Ver

    循环冗余校验(CRC,一种纠错码)的软件和硬件实现。 可以为任何指定的CRC生成器多项式自动生成硬件描述语言。一个循环校验码(一种ecc错误校验码)的软件和硬件实现软件实施 由于强大的矩阵计算功能和GUI功能,我...

    CRC32算法(包含动态和静态)C++代码和实例程序

    它通过计算数据的循环冗余校验值来判断数据是否在传输或存储过程中出现错误。CRC32算法基于多项式除法原理,通常使用一个固定的32位多项式,对数据进行除法运算,得到的余数即为CRC校验码。 在C++中实现CRC32,通常...

    dsPIC33E/PIC24E 系列参考手册第27章

    dsPIC33E/PIC24E 系列参考手册第 27 章 - 32 位可编程循环冗余校验(CRC) 本章概述了 dsPIC33E/PIC24E 系列微控制器中的 32 位可编程循环冗余校验(Cyclic Redundancy Check,CRC)模块。CRC 模块是一种软件可配置...

    基于FPGA的18b20的CRC校验码的并行算法及实现.pdf

    CRC校验,即循环冗余校验(Cyclic Redundancy Check),是一种用于检测数据传输或存储时可能出现的错误的校验码算法。CRC校验可以用于保证数据的完整性,广泛应用于数据通信、存储设备和计算机网络中。在本文档中,...

    获取文件CRC和MD5

    CRC(Cyclic Redundancy Check)循环冗余校验和MD5(Message-Digest Algorithm 5)是两种广泛应用于数据完整性检查的算法。通过这些算法可以验证文件或数据是否被篡改或损坏。 #### CRC算法详解 CRC是一种用于检测...

    crc7_code_v1_crc7算法_

    CRC(Cyclic Redundancy Check,循环冗余校验)是一种广泛用于数据传输错误检测的校验码技术。CRC7和CRC8是两种不同宽度的CRC校验,它们在嵌入式系统、通信协议和存储设备中都有应用。标题中的"CRC7_code_v1_crc7...

    比较详细的MODBUS资料,包含CRC校验工具

    CRC(循环冗余校验)是一种错误检测方法,通过对数据进行数学运算生成一个校验码,然后接收方再次计算这个校验码并与发送方提供的校验码进行比较,如果两者不同,就表明数据在传输过程中可能出现了错误。在MODBUS...

    crc.zip_crc_zip

    CRC,全称是Cyclic Redundancy Check,中文名为循环冗余校验,是一种广泛用于数据传输和存储中检测错误的校验技术。在ASM++中实现CRC算法,通常是为了提高程序的效率和可靠性,特别是在嵌入式系统或低级编程中。 ...

    bq769x0_I2C_sample_code_with_CRC.zip

    CRC(Cyclic Redundancy Check,循环冗余校验)是一种常用的错误检测方法,用于确保数据在传输过程中的完整性。在I2C通信中,CRC可以防止由于噪声或干扰导致的数据错误。 BQ76940是一款高级电池管理IC,适用于锂...

    C语言实现的常用校验加密算法

    本文将详细介绍C语言实现的四种常见校验加密算法:CRC(循环冗余校验)、BASE64编码、MD5(消息摘要算法5)以及SHA512(安全哈希算法512位)。这些算法广泛应用于数据完整性验证、信息传输安全和存储安全性等方面。 ...

    CRC32加密算法。

    CRC32(Cyclic Redundancy Check,循环冗余校验)是一种广泛应用于数据通信和存储领域的错误检测码,主要用于检查数据传输或存储时的错误。它的核心思想是通过一个预定义的多项式来计算数据的校验和,然后将这个校验...

    Modbus-RTU CRC16计算器

    在Modbus-RTU协议中,为了确保数据在传输过程中的完整性和准确性,会使用一种错误检测机制——循环冗余校验(CRC,Cyclic Redundancy Check)。CRC16是CRC校验中常用的一种算法,用于检查数据帧的完整性。 **CRC16...

    用函数检测 exe 或 dll 是否被修改

    校验和通常基于循环冗余校验(CRC)算法或更复杂的哈希函数,如MD5或SHA系列。 3. 计算完成后,函数将返回校验和。如果这个校验和与之前记录的原始校验和相同,那么我们可以认为文件未被修改;反之,则可能存在问题...

    一款计算校验和的工具软件

    校验和的计算通常基于特定的算法,如CRC(循环冗余校验)、MD5(Message-Digest Algorithm 5)、SHA-1(安全哈希算法1)或SHA-256等。这些算法通过将文件内容转化为固定长度的唯一数字摘要,即使文件内容有微小的...

    CRC.rar_keilc51

    在8051微控制器编程中,CRC(Cyclic Redundancy Check,循环冗余校验)是一种广泛使用的错误检测方法,用于确保数据在传输或存储过程中的完整性。CRC可以检测出二进制数据流中的大多数单比特错误以及一些多比特错误...

Global site tag (gtag.js) - Google Analytics