У меня есть InputStream
, который должен добавить символы в начало и конец, и должен закончиться с другой переменной типа InputStream
. Как я могу это сделать?
Добавление символов в начало и конец InputStream в Java
Ответ 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
.
Сообщите нам, если у вас есть проблема с любым из этих шагов.