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 pasadas: una vez precalcular algunas capacidades, y segundo para hacer el trabajo "real". No quiero que todo el archivo se cargue en la memoria a la vez (a menos que sea pequeño).entrada de archivo java con rebobinado()/reset() capacidad
¿Hay una clase Java adecuada que proporcione esta capacidad? FileInputStream no admite mark()/reset(). BufferedInputStream sí, creo, pero no estoy seguro de si tiene que almacenar todo el archivo para hacer esto.
C es tan simple que solo usa fseek(), ftell() y rebobinado(). :-(
Jason, por favor, no-aceptar mi respuesta y tomar [éste.] (Http://stackoverflow.com/a/18665678/3474) Es bueno porque proporciona una implementación eficiente de la API estándar 'InputStream'; cualquier consumidor de 'InputStream' puede usarlo sin cargar todo el archivo. – erickson