В своем заявлении я пытаюсь сжать /декаментировать байтовые массивы, используя класс инлаутера /дефляции Java.
Вот часть кода, который я использовал сначала: < /p>
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(data.length);
byte[] buffer = new byte[1024];
while (!inflater.finished()) {
int count = inflater.inflate(buffer);
outputStream.write(buffer, 0, count);
}
< /code>
Затем после того, как я развернул код, он случайным образом (очень редко) приводит к тому, что все приложение висит, и когда я взял дамп потока, я могу идентифицировать, что один поток висит < /p>
at java.util.zip.Inflater.inflateBytes(Native Method)
at java.util.zip.Inflater.inflate(Inflater.java:259)
- locked java.util.zip.ZStreamRef@fc71443
at java.util.zip.Inflater.inflate(Inflater.java:280)
< /code>
Это случается не очень часто. Затем я погуглил повсюду и обнаружил, что это могут быть некоторые пустые данные байта, передаваемые в отдаче, и Froner () никогда не вернет True.while (!inflater.finished())
< /code>
Чтобы определить, закончится ли он, я использовал < /p>
while (inflater.getRemaining() > 0)
< /code>
Но это случилось снова.
Теперь мне задается вопросом, какая реальная причина вызывает проблему. Не должно было пройти пустой массив в усвоении, даже если он это сделал, почему метод getRemaing () не сломал цикл Whance?
Кто -нибудь может помочь, пожалуйста? Это действительно меня беспокоит.
Подробнее здесь: https://stackoverflow.com/questions/553 ... -sometimes