# Zip File auslesen



## Java Student (18. Jun 2006)

Ich hab ein Problem mit dem Auslesen von Zipfiles.

Mein Programm erstellt ein Zipfile mit beliebig vielen Dateien und prüft anschließend, ob die Dateien noch dieselbe Zeilenzahl haben. Allerdings gibt's jetzt noch ein Problem mit dem Auslesen der Zipdatei.


```
//Dateien zippen
   public void zip() throws IOException 
    {
      ...
       // zipdatei ist der Name der erstellten ZipDatei  (wer hät's gedacht  :wink: )
       // lines ist ein Array, in dem die Zeilenzahl der Dateien vor dem Zipvorgang gespeichert ist
       scanZipfile(zipDatei,lines);
     
    }//end zip()
    
    public void scanZipfile(String zipDatei, int lines[]) throws IOException
      {
        Vector zipEntry = new Vector();
        String eintrag;
        int i=0;
        
        ZipInputStream in = new ZipInputStream(new FileInputStream(zipDatei));
        Enumeration e =null;

        while((in.getNextEntry())!=null)zipEntry.add(in.getNextEntry());  //hier wird immer null übergeben!??
        e= zipEntry.elements();

       while(e.hasMoreElements())
         { 
           eintrag =(String) e.nextElement();
           if( (countLines(eintrag) !=lines[i++]) ) {System.out.println("Fehlerhafte ZipDatei : "+eintrag);}
           else{System.out.println("Datei "+eintrag+" korrekt gezippt!");}
         }

      }
      
    int  countLines(String file)     throws IOException
     {
       String zeile;
       int counter = 0;
       LineNumberReader nummer = new LineNumberReader(new FileReader(file));

      while ((zeile = nummer.readLine())!=null)
           counter++;
      return counter;
     }
```

Das Programm soll die Zipdatei auslesen und die Dateinamen in einen Vector schreiben, aber es wird immer null eingetragen. Es liegt wohl am in.getNextentry() . Wie kann ich das richtig machen?


mfg


----------



## SebiB90 (18. Jun 2006)

du schmeißt ja immer ein entry in der schleife bedingung weg
mach es mal so:


```
ZipEntry entry = null;
while((entry = in.getNextEntry())!=null)zipEntry.add(entry);
```


----------



## Java Student (18. Jun 2006)

Danke!  Dieses ZipEntry als Rückgabetyp hat mich etwas verwirrt.
Jetzt hab ich nur noch ein Problem:
Der Dateiname wird jetzt eingelesen, aber wie kann ich ihn weiter verwenden? Er ist jetzt java.lang.Object aber ich brauche ja String. Mit einem einfachen cast auf String geht es nicht, dann gibt es eine ClassCastException.

Mfg


----------



## SebiB90 (18. Jun 2006)

was meinste jetzt?
zeig mal den code ausschnitt


----------



## Murray (18. Jun 2006)

In den Vector packst Du ja ZipEntrys, keine Strings.

Daher:

```
while(e.hasMoreElements()) {
           eintrag =((ZipEntry) e.nextElement()).getName();
```


----------



## Java Student (19. Jun 2006)

Danke, hat funktioniert. Diese Zeile hat noch gefehlt.
Danke für eure schnelle Hilfe!
Mfg


----------

