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的字节映射
这样一个从文件到内存的映射机制就建立起来了,接下来就是你要做的内存操作
发表评论
-
java.lang.UnsatisfiedLinkError: no j3dcore-ogl-chk in java.library.path
2011-08-19 17:01 2448Exception in thread "main& ... -
打jar包
2011-05-26 18:35 997打成jar包: 1、没有其他类库jar文件和插件 ... -
Java实现通用线程池
2011-05-05 23:11 1021线程池通俗的描述就是预先创建若干空闲线程,等到需要用多线程去处 ... -
Java tutorial
2011-05-05 21:49 971http://download.oracle.com/java ... -
java.awt.component.repaint()
2011-05-05 18:57 1004repaint public void repaint()R ... -
validate
2011-05-05 17:21 703validate public void validate( ... -
Class.forName和New的比较
2011-04-26 14:46 667在初始化一个类,生成一个实例的时候,newInstance() ... -
Responding to Window-Closing Events
2011-04-26 03:00 748By default, when the user close ... -
Map、Collection、List接口的总结
2011-04-26 02:52 789Map接口: | + -- ... -
复杂的GridBagLayout
2011-02-07 16:06 1002今天终于耐着性子弄懂了GridBagLayout是怎么使用的。 ... -
swing中的布局管理器
2011-02-07 15:42 14124.CardLayout CardL ... -
swing中的最上层组件
2011-02-07 15:05 2709swing中几乎所有组件都是从JComponent衍生而来,也 ... -
Java swing 组件分层介绍:JRootPane,GlassPane,LayeredPane
2011-02-06 17:01 2996什么是Swing,什么又是ligh ... -
JTextArea操作
2011-01-11 18:03 1196JTextArea操作: (1)在JTextArea插入 ... -
double到int转换
2010-12-16 23:28 812double到int转换,有“截断”误差的。 可以通过+0.5 ... -
各种排序算法java实现
2010-11-25 15:20 545package org.rut.util.algorith ... -
Java中使用BigDecimal进行浮点数高精度计算
2010-11-25 15:18 758转自:http://chongtianpig.netbei.c ... -
java中进行二进制,八进制,十六进制,十进制间进行相互转换
2010-11-19 13:48 619十进制转成十六进制: Integer.toHexString ... -
JScrollPane 例解
2010-11-19 01:49 1505类层次结构图: java.lang.Object -- ... -
JTextField JTextArea 区分
2010-11-19 01:14 1474一、单行文本输入框(JTextField) 在许多情况下 ...
相关推荐
循环冗余校验(CRC,一种纠错码)的软件和硬件实现。 可以为任何指定的CRC生成器多项式自动生成硬件描述语言。一个循环校验码(一种ecc错误校验码)的软件和硬件实现软件实施 由于强大的矩阵计算功能和GUI功能,我...
7.常用校验码:奇偶校验码(只能检错)、海明码(纠错加检错)、循环冗余校验码( CRC)。 8.计算机体系结构分类:单处理系统,并行处理与多处理系统,分布式处理系统。 9.指令集的发展:CISC(复杂指令集计算机):...
常用校验码常用校验码:奇偶校验码(只能检错)、海明码(纠错加检错)、循环冗余校验码(CRC)。 8.计算机体系结构分类计算机体系结构分类:单处理系统,并行处理与多处理系统,分布式处理系统。 9.指令集的发展:...
2.30 计算CRC-64循环冗余码校验 102 第3章 时间和财务计算 105 引言 105 3.1 计算昨天和明天的日期 111 3.2 寻找上一个星期五 112 3.3 计算日期之间的时段 114 3.4 计算歌曲的总播放时间 115 3.5 计算日期...
有两种版本的数据矩阵,一种是基于循环冗余校验(CRC)和卷积纠错,另一种是基于里德所罗门(RS)纠错。对于扫描、读取和提取数据位,基于CRC与基于RS的数据矩阵解码没有区别。 提取数据位之后,基于CRC的解码与...
循环冗余校验是一种典型的校验数据的方法。对于每一个数据块,它使用位循环移位和xor操作来产生一个16位或32位的校验和 ,这使得丢失一位或两个位的错误一定会导致校验和出错。这种方式很久以来就应用于文件的传输,...
CRC32.EC cs.ec Cur.ec debugprocess.ec des.ec DES 加密模块 1.0.ec DES加解密模块des.ec DirectX8VB组件调用模块.ec disk.ec DisplaySettings.ec DIY 热键框模块.ec DLL.ec DLL注入模块.ec DOS命令模块.ec dqf1996...
CRC32.EC cs.ec Cur.ec debugprocess.ec des.ec DES 加密模块 1.0.ec DES加解密模块des.ec DirectX8VB组件调用模块.ec disk.ec DisplaySettings.ec DIY 热键框模块.ec DLL.ec DLL注入模块.ec DOS命令模块.ec dqf1996...
4.8.5 循环冗余校验(CRC) 188 4.9 演进型多媒体(E-MBMS广播和多播业务)技术 189 4.9.1 MBMS信号和单播信号的复用 190 4.9.2 MBSFN传输技术优化 190 4.9.3 MBMS数据和控制信令的复用 190 4.9.4 MBMS的参数设计 190 ...
4.8.5 循环冗余校验(CRC) 188 4.9 演进型多媒体(E-MBMS广播和多播业务)技术 189 4.9.1 MBMS信号和单播信号的复用 190 4.9.2 MBSFN传输技术优化 190 4.9.3 MBMS数据和控制信令的复用 190 4.9.4 MBMS的参数设计 190 ...