entrada de arquivo java com recurso rewind () / reset ()

Eu preciso escrever uma função que receba algum tipo de fluxo de entrada (por exemplo, um InputStream ou um FileChannel) para ler um arquivo grande em duas passagens: uma para pré-compilar algumas capacidades e outra para fazer o trabalho "real". Eu não quero o arquivo inteiro carregado na memória de uma só vez (a menos que seja pequeno).

Existe uma classe Java apropriada que fornece esse recurso? FileInputStream em si não suporta mark () / reset (). BufferedInputStream, penso eu, mas não estou claro se tem que armazenar o arquivo inteiro para fazer isso.

C é tão simples que você apenas usa fseek (), ftell () e rewind (). :-(

questionAnswers(8)

yourAnswerToTheQuestion