Entrada de archivo java con capacidad de rebobinado () / reinicio ()

Necesito escribir una función que tome algún tipo de flujo de entrada (por ejemplo, un InputStream o un FileChannel) para leer un archivo grande en dos pasos: una vez para calcular algunas capacidades y la segunda para hacer el trabajo "real". No quiero que todo el archivo se cargue en la memoria de una vez (a menos que sea pequeño).

¿Hay una clase de Java apropiada que proporcione esta capacidad? FileInputStream en sí no admite mark () / reset (). BufferedInputStream lo hace, creo, pero no estoy claro si tiene que almacenar todo el archivo para hacer esto.

C es tan simple, solo usa fseek (), ftell () y rebobinar (). :-(

Respuestas a la pregunta(8)

Su respuesta a la pregunta