2011-08-17 21 views

Respuesta

29

Quiere un SequenceInputStream y un par de ByteArrayInputStream s. Puede usar String.getBytes para hacer los bytes para este último. SequenceInputStream es antiguo, por lo que es un poco torpe para usar:

InputStream middle ; 
String beginning = "Once upon a time ...\n"; 
String end = "\n... and they lived happily ever after."; 
List<InputStream> streams = Arrays.asList(
    new ByteArrayInputStream(beginning.getBytes()), 
    middle, 
    new ByteArrayInputStream(end.getBytes())); 
InputStream story = new SequenceInputStream(Collections.enumeration(streams)); 

Si usted tiene una gran cantidad de personajes que añadir, y no quiere convertirlos en bytes en masa, podría ponerlos en una StringReader, luego use ReaderInputStream desde Commons IO para leerlos como bytes. Pero necesitaría agregar Commons IO a su proyecto para hacer eso. El código exacto para eso se deja como un ejercicio para el lector.

+0

Más detalles, por favor? Gracias por los útiles nombres de clase. – pqn

+2

Si lees el javadoc para esas clases, es bastante obvio. Construya un primer ByteArrayInputStream (llamémoslo cabeza) que contenga los bytes del comienzo, un segundo que contenga los bytes del final (llamémoslo cola), y construya un SequenceInputStream desde la cabeza, la corriente de entrada original y la cola. –

+0

¡Gracias! He logrado hacer que esto funcione ahora. – pqn

0

1 Crear un nuevo OutputStream, respaldado por una matriz de bytes como se sugiere Greg ..
2 Escribe los caracteres iniciales de su nuevo OutputStream.
3 Copie su InputStream existente en su nuevo OutputStream.
4 Escriba los caracteres finales en su nuevo OutputStream.
5 Cierre su nueva OutputStream, teniendo cuidado de conservar la matriz de respaldo.
6 Abra la matriz de respaldo como una nueva InputStream.

Háganos saber si tiene algún problema con alguno de estos pasos.

+0

¿Cómo se escriben los caracteres en un InputStream? –

+0

-1, escriba los caracteres finales en su nuevo InputStream. -> no puedes escribir caracteres en un InputStream – GBa

+0

¡Vaya! Reinicia el cerebro Escribe en una secuencia de salida, respaldada por una matriz de bytes como dice Greg. Extraiga la matriz de respaldo y vuelva a abrir como una secuencia de entrada. Gracias por la corrección. – rossum

Cuestiones relacionadas