我有一个15亿条长的阵列。现在,我想写入磁盘并再次读回来。任何人都可以帮助我是否有任何Java库(或自定义程序)来有效地做到这一点。
通常,我使用FileChannel和MappedByteBuffer来实现。但是,对于15亿美元的长期进入,它只是超出了限制。
编辑:
FileChannel ch = new RandomAccessFile(path, "r").getChannel();
MappedByteBuffer mb = ch.map(FileChannel.MapMode.READ_ONLY, 0, ch.size());
mb.order(ByteOrder.nativeOrder());
答案 0 :(得分:1)
我从未尝试过这种大小的对象,但我认为你可以尝试将你的数组包装在类实现java.io.Serializable接口中:
class MyWrapper implements java.io.Serializable
{
Object[] myArray;
}
然后,当您需要在磁盘上存储阵列时,您只需使用接口方法即可:
FileOutputStream fouts = new
FileOutputStream("pathtofile");
// Write object with ObjectOutputStream
ObjectOutputStream outobj= new
ObjectOutputStream (fouts);
// Write object out to disk
outobj.writeObject ( myWrapperInstance );
为了检索
FileInputStream infile = new
FileInputStream("pathtofile");
ObjectInputStream inobj =
new ObjectInputStream (infile);
Object obj = inobj.readObject();
MyWrapper myWrapperInstance = (MyWrapper) obj;