Вы можете использовать PipedInputStream и PipedOutputStream
следующим образом:
PipedOutputStream outstr = new PipedOutputStream();
PipedInputStream instr = new PipedInputStream(outstr);
, которые не позволят вам напрямую искать, но позволяют пропустить столько байтов, сколько вы хотитевходной поток.
Имейте в виду, что всякий раз, когда вы пишете в outtr, он блокируется до тех пор, пока все не будет прочитано в instr (то есть: если я правильно помню, потоки не буферизуются, но вы можете украсить ихBufferedInputStream, тогда вам не нужно беспокоиться.