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
}