Java如何将非常大的长数组写入/读入文件

时间:2012-07-30 02:19:13

标签: java

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

1 个答案:

答案 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;