作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个 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/
我是一名优秀的程序员,十分优秀!