2011-08-17 2 views

답변

29

SequenceInputStreamByteArrayInputStream을 두 개 입력해야합니다. String.getBytes을 사용하여 후자에 대한 바이트를 만들 수 있습니다. 당신이에 넣어 수 있습니다, 당신은 추가 할 문자를 많이 가지고 있고, 한꺼번에 엉 바이트 로 변환하고 싶지 않은 경우

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

: SequenceInputStream로 고대, 그래서 그것은 사용하기 조금 투박입니다 StringReader을 입력 한 다음 Commons IOReaderInputStream을 사용하여 바이트로 읽습니다. 하지만 그렇게하려면 프로젝트에 Commons IO를 추가해야합니다. 이에 대한 정확한 코드는 독자를위한 연습 과제로 남겨 두었습니다.

+0

자세한 사항을 알려주십시오. 편리한 클래스 이름을 가져 주셔서 감사합니다. – pqn

+2

해당 클래스의 javadoc을 읽는다면 꽤 분명합니다. 시작점의 바이트를 포함하는 첫 번째 ByteArrayInputStream (머리 부르기), 끝의 바이트를 포함하는 두 번째 바이트 (꼬리라고 부름) 및 머리글, 원본 입력 스트림 및 꼬리에서 SequenceInputStream을 빌드합니다. –

+0

감사합니다! 나는이 일을 지금 할 수 있었다. – pqn

0

1 새 배열 OutputStream을 만듭니다. 제안 된 바이트 배열은 ..
에 시작 문자를 씁니다.
3 기존 InputStream을 새로운 OutputStream에 복사하십시오.
4 새 문자 OutputStream에 끝 문자를 씁니다.
5 뒷받침 배열을 유지하면서 새 OutputStream을 닫습니다.
6 받침대를 새로 열기 InputStream으로 엽니 다.

이러한 단계에 문제가 있으면 알려주십시오.

+0

InputStream에 문자를 쓰려면 어떻게해야합니까? –

+0

-1, 끝 문자를 새로운 InputStream에 씁니다. -> InputStream에 문자를 쓸 수 없다 – GBa

+0

와! 뇌를 재부팅합니다. Greg 씨가 말한 것처럼, 바이트 배열에 의해 출력 스트림에 기입 해주세요. 보조 배열을 추출하고 입력 스트림으로 다시여십시오. 수정 해줘서 고마워. – rossum

관련 문제