Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben (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 von M.A.Knapp

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...