protected static void grabFilesAndDirs ( String file , List < String > dirs , List < String > files ) throws IOException { File zipFile = new File ( file ) ; if ( ! zipFile . exists ( ) ) { Logger logger = new ConsoleLogger ( Logger . LEVEL_INFO , "console" ) ; logger . error ( "JarArchive skipping non-existing file: " + zipFile . getAbsolutePath ( ) ) ; } else if ( zipFile . isDirectory ( ) ) { Logger logger = new ConsoleLogger ( Logger . LEVEL_INFO , "console" ) ; logger . info ( "JarArchiver skipping indexJar " + zipFile + " because it is not a jar" ) ; } else { org . apache . commons . compress . archivers . zip . ZipFile zf = null ; try { zf = new org . apache . commons . compress . archivers . zip . ZipFile ( file , "utf-8" ) ; Enumeration < ZipArchiveEntry > entries = zf . getEntries ( ) ; HashSet < String > dirSet = new HashSet < String > ( ) ; while ( entries . hasMoreElements ( ) ) { ZipArchiveEntry ze = entries . nextElement ( ) ; String name = ze . getName ( ) ; // avoid index for manifest-only jars. if ( ! name . equals ( META_INF_NAME ) && ! name . equals ( META_INF_NAME + ' ' ) && ! name . equals ( INDEX_NAME ) && ! name . equals ( MANIFEST_NAME ) ) { if ( ze . isDirectory ( ) ) { dirSet . add ( name ) ; } else if ( ! name . contains ( "/" ) ) { files . add ( name ) ; } else { // a file, not in the root // since the jar may be one without directory // entries, add the parent dir of this file as // well. dirSet . add ( name . substring ( 0 , name . lastIndexOf ( "/" ) + 1 ) ) ; } } } dirs . addAll ( dirSet ) ; } finally { if ( zf != null ) { zf . close ( ) ; } } } }
Grab lists of all root - level files and all directories contained in the given archive .