Добавление символов в начало и конец InputStream в Java - PullRequest
13 голосов
/ 18 августа 2011

У меня есть InputStream, который мне нужен для добавления символов в начало и конец, и должен заканчиваться другой переменной типа InputStream.Как я мог легко это сделать?

Ответы [ 2 ]

34 голосов
/ 18 августа 2011

Требуется SequenceInputStream и пара ByteArrayInputStream с.Вы можете использовать String.getBytes , чтобы сделать байты для последнего.SequenceInputStream древний, поэтому его немного неуклюже использовать:

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));

Если вам нужно добавить много символов и вы не хотите преобразовывать их в байты массово ,Вы можете поместить их в StringReader , а затем использовать ReaderInputStream из Commons IO , чтобы прочитать их как байты.Но для этого вам нужно добавить Commons IO в ваш проект.Точный код для этого оставлен в качестве упражнения для читателя.

0 голосов
/ 18 августа 2011

1 Создайте новый OutputStream, подкрепленный байтовым массивом, как предложил Грег ..
2 Напишите начальные символы для вашего нового OutputStream.
3 Скопируйте существующий InputStream в новый OutputStream.
4 Запишите конечные символы в ваш новый OutputStream.
5 Закройте новый OutputStream, сохраняя резервный массив.
6 Откройте массив резервных копий как новый InputStream.

Сообщите нам, если у вас возникнут проблемы с любым из этих шагов.

...