Имейте в виду, что при использовании fileInputStream.available()
возвращаемое целое число не обязательно должно представлять фактический размер файла, а скорее предполагаемое количество байтов, которое система должна быть в состоянии прочитать из потока без блокировки ввода-вывода. Безопасный и простой способ может выглядеть следующим образом
public String readStringFromInputStream(FileInputStream fileInputStream) {
StringBuffer stringBuffer = new StringBuffer();
try {
byte[] buffer;
while (fileInputStream.available() > 0) {
buffer = new byte[fileInputStream.available()];
fileInputStream.read(buffer);
stringBuffer.append(new String(buffer, "ISO-8859-1"));
}
} catch (FileNotFoundException e) {
} catch (IOException e) { }
return stringBuffer.toString();
}
Следует учитывать, что этот подход не подходит для многобайтовых кодировок символов, таких как UTF-8.