exception - IndexOutOfBoundsException when reading from a ZipInputStream Java -


i'm trying implement algorithm description previous question had here in stackoverflow:

suppressing or not allowing access time modified java

so implemented as

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();         } 

however, i'm getting exception in thread "main" java.lang.indexoutofboundsexception in else statement. know why? also, please tell me if algorithm correctly implemented?

you're calling getnextentry() twice, instead of once:

while (entry.getnextentry() != null) { // goes next entry     zipentry current = entry.getnextentry(); // goes next entry 

use instead:

zipentry current; while ((current = entry.getnextentry()) != null) {     // use current    } 

or

for (zipentry current = entry.getnextentry(); current != null; current = entry.getnextentry()) {     // use current } 

Comments

Popular posts from this blog

django - How can I change user group without delete record -

java - Need to add SOAP security token -

java - EclipseLink JPA Object is not a known entity type -