thread significa que index exceptionininitializererror java exception zip nullpointerexception indexoutofboundsexception

significa - IndexOutOfBoundsException al leer desde un ZipInputStream Java



java.lang.indexoutofboundsexception index 0 size 0 (1)

Estoy tratando de implementar esta descripción de algoritmo de una pregunta anterior que tuve aquí en stackoverflow:

suprimir o no permitir que el tiempo de acceso se modifique java

así que implementé como

byte[] digest = new byte[this.BUFFER]; MessageDigest md5; try { md5 = MessageDigest.getInstance("MD5"); while(entry.getNextEntry() != null){ ZipEntry current = entry.getNextEntry(); if(current.isDirectory()){ digest = this.encodeUTF8(current.getName()); md5.update(digest); } else{ entry.read(digest, 0, this.BUFFER); md5.update(digest); } } digest = md5.digest(); entry.close(); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); }

Sin embargo, obtengo una Excepción en el hilo "principal" java.lang.IndexOutOfBoundsException en la declaración else. ¿Alguien sabe por qué? Además, ¿podría decirme si mi algoritmo se implementó correctamente?


Está llamando a getNextEntry() dos veces, en lugar de una vez:

while (entry.getNextEntry() != null) { // goes to the next entry ZipEntry current = entry.getNextEntry(); // goes to the next entry

Use esto en su lugar:

ZipEntry current; while ((current = entry.getNextEntry()) != null) { // use current }

o

for (ZipEntry current = entry.getNextEntry(); current != null; current = entry.getNextEntry()) { // use current }