gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 03:42:09 25 4
gpt4 key购买 nike

我有一个 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 接口(interface)的类中:

    class MyWrapper implements java.io.Serializable 
{
Object[] myArray;
}

然后,当您需要将阵列存储在磁盘上时,您只需使用接口(interface)方法即可:

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;

关于Java如何将非常大的长数组写入/读取到文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11714718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com