D
Devilmarkus
Gast
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:
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
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:
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