2013-05-27 88 views
-4

你可以有一個輸入流讀取超過8192個字符?當我嘗試讀取它之後的行李箱。Java InputStream 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

是的,當然沒有這種限制,請給我們一些代碼,然後我們可以發現您的bug –

回答

1

read(char[] buffer)方法不保證填充所有緩衝區。這通常發生在所有類似InputStream的接口中。您必須將讀取循環,直到它返回-1,這意味着已到達流的末尾。

但我建議你使用Apache Commons IO只是這樣的:

char[] buffer = IOUtils.toCharArray(stream)