Я хочу следить за ходом загрузки данных.Я хочу войти после того, как определенное количество данных было передано.Мой код:
int contentLength = 0;
final int bufferSize = 1024*8;
byte[] buffer = new byte[bufferSize];
int length = 0;
while ( (length = bufferedInputStream.read(buffer) ) !=-1 ) {
contentLength = contentLength+length;
if ( (contentLength % (bufferSize*1024*4)) ==0 ) {
logger.debug(contentLength);
}
}
Это, похоже, не работает.Кажется, что буфер не всегда заполнен, и, следовательно, кратный размер буфера, который используется по модулю, не совпадает.
Действительно ли это часто, что буфер не "заполнен"?Как это может случиться?Какова внутренняя логика, по которой "буфер" "очищается"?Ожидает ли Java определенное время для получения пакетов, а затем сбрасывается (если буфер не заполнен)?Любая информация о том, как это внутренне работает, была бы полезна для понимания.
(мне не нужно решение, я его реализовал другим, просто интересно, распространено ли это, что буфер никогда полностью не читается?Любопытно понять почему.)
Спасибо большое!Jens