Может кто-нибудь объяснить мне, почему эта конструкция не будет работать:
while (fileInputStream.available()>0) {
fileOutputStream.write(fileInputStream.read());
}
и этот работает просто отлично:
while (fileInputStream.available()>0) {
int data = fileInputStream.read();
fileOutputStream.write(data);
}
Как по мне, они идентичны, но 1-й не будет правильно записывать данные (запишет половину длины файла/данные).
fileInputStream.available()
для чтения цикла. Он не делает того, что вы думаете. Он просто сообщает вам, сколько байтов доступно без блокировки, что не обязательно является длиной файла. Это может повлиять на ваши результаты независимо от проблемы с переменной. - person RealSkeptic   schedule 06.10.2015