I думаю в вашем коде есть ошибка, последнее чтение может не обязательно заполнять символ [], но вы все равно загружаете строку со всем этим. Для этого вам нужно сделать что-то вроде:
StringBuilder res = new StringBuilder();
InputStreamReader r = new InputStreamReader(new BufferedInputStream(is));
char[] c = new char[1024];
while(true) {
int charCount = r.read(c);
if (charCount == -1) {
break;
}
res.append(c, 0, charCount);
}
r.close();
Кроме того, откуда вы знаете, что ожидаете 25634 символа?
(и использовать StringBuilder вместо StringBuffer, первый не безопасен для потоков, поэтому заметно быстрее)