繁体   English   中英

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

[英]Java How to write/read very large long array into file

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

我从未尝试过这种大小的对象,但我认为你可以尝试将你的数组包装在类实现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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM