Подтвердить что ты не робот

Добавление символов в начало и конец InputStream в Java

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

4b9b3361

Ответ 1

Вы хотите 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));

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

Ответ 2

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

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