Cambiar el posicionamiento del índice en InputStream

Tengo un archivo binario que contiene las claves y después de cada clave hay una imagen asociada con él. Quiero saltar diferentes claves pero no pude encontrar ningún método que cambie el posicionamiento del índice en el flujo de entrada. He visto el método mark() , pero no salta en diferentes lugares.

¿Alguien tiene alguna idea de cómo hacer eso?

Hay un método de long skip(long n) que puede ser capaz de utilizar:

Salta y descarta n bytes de datos de este flujo de entrada. El método skip puede, por una variedad de razones, terminar saltando sobre un número menor de bytes, posiblemente 0 . Esto puede resultar de cualquiera de una serie de condiciones; Llegar al final del archivo antes de n bytes se han saltado es sólo una posibilidad. Se devuelve el número real de bytes omitidos. Si n es negativo, no se omite ningún byte.

Como se documenta, no se garantiza que se omitirán n bytes, por lo tanto, compruebe dos veces el valor devuelto. Tenga en cuenta que esto no le permite "saltar hacia atrás", pero si es markSupported() , puede reset() primero y luego skip hacia adelante a una posición anterior si es necesario.


Otras opciones

También puede utilizar java.io.RandomAccessFile , que como su nombre indica, permite el acceso aleatorio con su método de seek(long pos) .

Usted mencionó imágenes, por lo que si está utilizando Java Advanced Imaging , otra opción posible es com.sun.media.jai.codec.FileSeekableStream , que es un SeekableStream que toma su entrada de un File o RandomAccessFile . Tenga en cuenta que esta clase no es una parte comprometida de la API JAI. Puede ser eliminado o modificado en futuras versiones de JAI.

  • Dile a Proguard que mantenga la anotación en los métodos
  • Dibujo sobre lienzo con pintura en mejor resolución? (Androide)
  • Las pestañas de menú no responden
  • NullPointerException en getDefaultSharedPreferences
  • Problemas con pruebas de instrumentos Espresso en los dispositivos de tiempo de ejecución de Dalvik
  • Agregar una cookie a una solicitud HTTP
  • GLES2.0: Usar GL_TEXTURE_EXTERNAL_OES a través de glEGLImageTargetTexture2DOES
  • Trabajando con DIalogs en fragmentos
  • Dibuja una línea con bordes curvos en Android
  • Práctica recomendada para que el cliente android se comunique con un servidor mediante subprocesos
  • Android M permiso de la prueba READ_PHONE_STATE (permisos peligrosos)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.