2009-04-22 22 views
6

Tengo la intención de utilizar la función markSupported para verificar el primer byte para verificar el formato y luego restablecerlo, por favor dígame qué flujo se debe usar para la comunicación basada en tcp en java. Para la mayoría de las transmisiones, como datainputstream no proporciona esta función. Por favor, pueden darme algunos consejos para usar la marca y reiniciar.Cómo utilizar la característica markSupported de inputstream java

Respuesta

8

Puede usar un BufferedInputStream alrededor de cualquier otro flujo que tenga. Eso garantiza la marca/reinicio, siempre y cuando no intente leer más allá del tamaño del búfer después de marcar.

+2

1 ¿Por qué necesito una búsqueda en Google y una pregunta relacionada tangencialmente a resolver un problema cuya solución es intuitivamente llamado y documentado? Ah, los misterios de la mente humana ... –

8

Eche un vistazo a PushbackInputStream, que parece que está diseñado para hacer lo que quiera.

Va a envolver un flujo de entrada existente y le permitirá leer un byte, y luego volver a colocarlo. Desde Javadoc:

Un PushbackInputStream agrega funcionalidad a otra secuencia de entrada, es decir, la capacidad de "retroceder" o "no leer" un byte. Esto es útil en situaciones en las que es conveniente que un fragmento de código lea un número indefinido de bytes de datos delimitados por un valor de byte particular; después de leer el byte de terminación, el fragmento de código puede "leerlo", de modo que la siguiente operación de lectura en la secuencia de entrada vuelva a leer el byte que se envió hacia atrás. Por ejemplo, los bytes que representan los caracteres que constituyen un identificador pueden terminar por un byte que representa un carácter de operador; un método cuyo trabajo es leer solo un identificador puede leer hasta que ve al operador y luego empujar al operador hacia atrás para volver a leerlo.

+0

¡Nunca me di cuenta de esta clase! ¡Me gusta aprender! – dfa

Cuestiones relacionadas