大文件数据读取、去重、出现最多的次数前10

大文件数据读取、去重、出现最多的次数前10

分割读取指定的大文件

文件通道
     对文件建立   java.nio.channels.FileChannel   ,每次调用   read()   方法时会先将文件数据读取到分配的长度为   arraySize     java.nio.ByteBuffer   中,
     再从中将已经读取到的文件数据转化到   array   中。这种利用了NIO中的通道的方法,比传统的字节流读取文件是要快一些。

内存文件映射

这种方法就是把文件的内容被映像到计算机虚拟内存的一块区域

把文件的内容被映像到计算机虚拟内存的一块区域,从而可以直接操作内存当中的数据而无需每次都通过 I/O 去物理硬盘读取文件。
由当前 java 态进入到操作系统内核态 ,由 操作系统读取文件,再返回数据到当前 java 态的过程 。这样就 能大幅提高我们操作大文件的速度


所以前者也只能最大索引到   Integer.MAX_VALUE   的位置。这样的话我们是不是就没有办法了?当然不是, 一个内存文件映射不够用,那么试一试用多个就可以了
private MappedByteBuffer[] mappedBufArray;




















你可能感兴趣的:(Java后台开发)