Я написал файл, используя класс FileChannel Java, который использует RandomAccessFiles. Я написал объекты в разных местах файла. Объекты были разного размера, но все одного класса. Я написал объекты, используя следующую идею:
ByteArrayOutputStream bos= new ByteArrayOutputStream();
ObjectOutput out = new ObjectOutputStream(bos);
out.writeObject(r);
byte[] recordBytes= bos.toByteArray();
ByteBuffer rbb= ByteBuffer.wrap(recordBytes);
while(rbb.hasRemaining()) {
fileChannel.write(rbb);
}
Теперь я хочу прочитать из такого файла. Я не хочу указывать количество байтов для чтения. Я хочу иметь возможность читать объект напрямую, используя поток ввода объекта. Как этого добиться?
Я должен использовать файлы с произвольным доступом, потому что мне нужно записывать в разные позиции в файле. Я также записываю в отдельную структуру данных места, где были записаны объекты.