4

我有一个 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());
4

1 回答 1

1

我从未尝试过这种大小的对象,但我认为您可以尝试将数组包装在一个类 implementationig 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;
于 2012-07-31T12:59:35.523 回答