好的.所以我有大量的二进制数据(比方说,10GB)分布在不同长度的一堆文件(比方说5000)上.
我正在编写一个Java应用程序来处理这些数据,我希望为数据访问建立一个好的设计.通常情况会是这样的:
无论如何,在处理过程中将读取所有数据.
每个文件(通常)按顺序读取,一次只需几千字节.但是,通常需要同时具有每个文件的前几千字节,或者同时具有每个文件的中间几千字节等.
有时,应用程序需要随机访问一个或两个字节.
目前我使用RandomAccessFile类读取字节缓冲区(和ByteBuffers).我的最终目标是将数据访问封装到某个类中,以便它快速,我再也不用担心它了.基本功能是我将要求它从指定文件中读取数据帧,并且我希望在上述考虑因素的情况下最小化I/O操作.
典型访问的示例:
给我所有文件的前10千字节!
给我文件F的字节0到999,然后给我字节1到1000,然后给我2到1001等等,...
从文件F开始给我一兆字节的数据,从这样的字节开始!
对优秀设计的任何建议?
使用Java NIO和MappedByteBuffers,并将文件视为字节数组列表.然后,让操作系统担心缓存,读取,刷新等细节.