2013-05-27 3 views
-4

8192 개 이상의 문자를 읽는 입력 스트림이 있습니까? 내가 그것을 읽으려고 할 때 그 후에 그것을 만난다.자바 입력 스트림 8192 바이트

InputStream stream = responseEntity.getContent(); 
// Read response data into buffer 
ArrayList<Character> buffer = new ArrayList<Character>(); 
InputStreamReader reader = new InputStreamReader(stream); 
int count = 1; 
char[] buffer2 = new char[8192]; 
int j = 0; 
while (count >= 0) { 
    count = reader.read(buffer2); 
    for (int i = 0; i < count; i++) { 
     char c = buffer2[i]; 
     buffer.add(c); 
    } 
    j++; 
} 
stream.close(); 
StringBuilder builder = new StringBuilder(buffer.size()); 
for (Character ch : buffer) { 
    builder.append(ch); 
} 
+1

당신은 정말 이것보다 좀 더 코드를 표시해야 할거야! – Nick

+0

코드를 표시하지 않으면 게시물이 닫힙니다. _ ( – Maroun

+1

예, 물론 그런 제한이 없습니다. 일부 코드를 표시하면 버그를 발견 할 수 있습니다. –

답변

1

read(char[] buffer) 방법으로 모든 버퍼를 채울 수 있다고 보장 할 수 없습니다. 이것은 일반적으로 인터페이스와 같은 모든 InputStream에서 발생합니다. -1을 반환 할 때까지 루프에 읽음을 넣어야합니다. 즉, 스트림의 끝까지 도달했음을 의미합니다.

하지만 난 당신이 이런 식으로 간단하게 Apache Commons IO를 사용하는 것이 좋습니다 :

char[] buffer = IOUtils.toCharArray(stream)