Да, для произвольного доступа к InputStream вы должны буферизовать поток (по крайней мере, до запрошенной точки).Библиотека, такая как Unified I / O, должна работать, или вы можете реализовать DataInput и DataOutput, в которых ваш класс будет работать как RandomAccessFile, за исключением файловой части, если у вас есть потребности в специальной буферизации.