Devilmarkus Geschrieben 12. Februar 2009 Geschrieben 12. Februar 2009 Hallo zusammen, wer kann mir hilfreich zur Seite stehen? Mein Problem bezieht sich auf das Lesen von ZIP-Dateien. Bei ZIPs mit nur einer Datei funktioniert das ja soweit ganz gut. Allerdings möchte ich dem User die Möglichkeit geben, wenn sich in einem ZIP mehrere Dateien befinden, auswählen zu können, welche geladen werden soll. Hier mein aktueller Code: public final InputStream openFile(String name) throws Exception { System.out.println("File: " + name); InputStream result; if (name.toLowerCase().endsWith(".zip")) { ZipEntry entry; ZipInputStream str = new ZipInputStream(result); while((entry = str.getNextEntry()) != null) { zipcount++; String EntryName = entry.getName().toLowerCase(); if( EntryName.endsWith(".dsk")|| // amstrad diskimage EntryName.endsWith(".cdt")|| // amstrad tape EntryName.endsWith(".bin")|| // amstrad binary EntryName.endsWith(".bas")|| // amstrad basic EntryName.endsWith(".cpr")|| // amstrad + cartridge EntryName.endsWith(".sna")|| // amstrad snapshot EntryName.endsWith(".z80")|| // spectrum snapshot EntryName.endsWith(".o") || // zx 81 snapshot EntryName.endsWith(".p") || // zx 80 snapshot EntryName.endsWith(".vsf")|| // vice snapshot (c64) EntryName.endsWith(".tzx")|| // spectrum tape EntryName.endsWith(".rom")|| // rom (general) EntryName.endsWith(".ssd")|| // bbc diskimage EntryName.endsWith(".fnt")|| // bbc font EntryName.endsWith(".vz") || // vz 200/300 snapshot EntryName.endsWith(".chr")|| // vz 200/300 chars EntryName.endsWith(".wav") // PCM .wav file ) { System.out.println("Reading " + entry.getName()); return str; } else System.out.println("Skipping " + entry.getName()); } System.out.println("ZIP entries:" + zipcount); zipcount = 0; } return result; } Hierbei handelt es sich NICHT um eine Haus- oder Prüfungsaufgabe, sondern soll meinen Emulator verbessern. Deshalb nutzt mir leider auch wenig ein Hinweis auf JAVA-Handbücher oder ähnliches. Ich habe schon einiges an entsprechenden Quellen durchforstet, bin aber leider noch nicht dahinter gekommen, wie ich dieses nun Bewerkstelligen kann. Ist nur eine Datei in dem ZIP, soll diese einfach gelesen werden. Sind 2 oder mehr Dateien in dem ZIP, sollte der User ein Fenster bekommen mit einer Auswahlliste für die einzelnen Dateien. In der 'While - Schleife" habe ich schon versucht, einen Dialog einzubauen, ob die aktuelle Datei gelesen werden soll oder nicht. Aber irgendwie hat das nicht funktioniert. (Abfrage per Dialogbox, ob geladen werden soll oder nicht, Wenn ja: return str; Wenn nein: setze While-Schleife fort..) Ich wäre hier wirklich für jede Hilfe dankbar. MfG Markus Zitieren
M.A.Knapp Geschrieben 15. Februar 2009 Geschrieben 15. Februar 2009 (bearbeitet) Deine Funktion liefert ja nur den Anfang auf die erste Datei , die mit einer dieser Endungen beginnt. Du mußt 1) eine Funktion bauen, die dir alle gewünschten Einträge im ZIP-File zurückliefert, da empfiehlt sich als Rückgabetyp ein Array oder eine Liste und 2) eine Funktion die einen gewünschten ZIP-Eintrag dekomprimiert. LG, Michael Bearbeitet 15. Februar 2009 von M.A.Knapp Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.