Я написал веб-сервер для Android.Поэтому вчера я хотел добавить к нему возможности загрузки.
byte[] receivedBuffer = new byte[BUFFER_SIZE];
BufferedInputStream bis = new BufferedInputStream(_client.getInputStream(), BUFFER_SIZE);
int bytesRead = 0;
while ((bytesRead = bis.read(receivedBuffer,0,BUFFER_SIZE)) != -1) {
//do stuff with bytes
if (bis.available() == 0) {
break;
}
}
// this point
Моя проблема в том, что когда я загружаю файлы, размер которых превышает 400 КБ, чтение возвращает -1 в середине загрузки файла.И если я смотрю на bis.available () в «этой точке», он все еще показывает> 0
, я пытался изменить
bytesRead = bis.read(receivedBuffer,0,BUFFER_SIZE)
на этот
bytesRead = bis.read(receivedBuffer)
Еще одна вещь, которую я попробовал, это понизить размер buffer_size, и он работал для файлов немного большего размера. Также я добавил thread.sleep чуть ниже if (bis.availabe () == 0 и снова немного помог. Это почти как bisвсе еще загружает данные из сетевого потока, когда я вызываю read, и в этот момент ничего не происходит, а затем он возвращает -1.
Мне нужна помощь, два дня я пытался заставить это работать.