I don't understand why the first variant is working and the second is not.
BufferedReader reader = new BufferedReader(new InputStreamReader(in, charsetName));
try {
char[] buffer = new char[4096];
reader.read(buffer, 0, 4096);
return new String(buffer);
} finally {
reader.close();
}
BufferedReader reader = new BufferedReader(new InputStreamReader(in, charsetName));
try {
int size = 0;
int ch=0;
while ((ch=reader.read())!=-1){
size++;
}
char[] buffer = new char[size];
reader.read(buffer, 0, size);
return new String(buffer);
} finally {
reader.close();
}