我想将属于不同类的对象存储在单个内存映射文件中。 从文件中读取是否有任何方法来了解对象类型。
内存映射文件是否仅用于单个java类?
try {
RandomAccessFile memoryMappedFile = new RandomAccessFile(file,mode);
long fileSize = memoryMappedFile.length();
System.out.println("file size " + fileSize);
FileChannel fc = memoryMappedFile.getChannel();
System.out.println("Chaannel size" + fc.size());
MappedByteBuffer outBuffer = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
List<MemoryMappedFile> list = new ArrayList<MemoryMappedFile>();
while(outBuffer.hasRemaining()) {
MemoryMappedFile mf = new MemoryMappedFile(outBuffer.getLong(), outBuffer.getInt(), outBuffer.getDouble());
list.add(mf);
}
fc.close();
memoryMappedFile.close();
}
答案 0 :(得分:0)
如果您创建一个自定义方法来序列化您的对象,您可以包括开始和结束字节或某种格式到您编写的内容。然后,知道它是如何编写的,您可以创建一种方法来读取该特定格式的文件。当然,这需要比仅使用标准Java序列化库更多的工作。