Zum Inhalt springen

file_id.diz Datei umgehen wenn ZIP geöffnet wird


Devilmarkus

Empfohlene Beiträge

Hallo,

wie kann ich die in einigen ZIP-Archiven enthaltene 'file_id.diz' Datei umgehen beim einlesen einer ZIP-Datei?

Hier mein Code zum Einlesen:

  public InputStream openFile(String name) throws Exception {

    System.out.println("File: " + name);

    InputStream result;

    try {

        result = new URL(applet.getCodeBase(),name).openStream();

        } catch(Exception e) {

        result = new FileInputStream(name);

    }

    if (name.toLowerCase().endsWith(".zip")) {

      ZipInputStream str = new ZipInputStream(result);

      str.getNextEntry();

      result = str;

    }

    return result;

}

Wer kann mir nun sagen, wie ich erkennen kann, ob eine 'file_id.diz' Datei in dem ZIP ist, und wie ich diese umgehen kann?

Beispiel:

in dem ZIP 'test.zip' sind enthalten:

- file_id.diz

- test.dsk

Nun möchte ich, dass nur das 'test.dsk' gelesen wird.

MfG

Markus

Bearbeitet von Devilmarkus
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

eine Möglichkeit wäre die folgende:

public static ArrayList<ZipEntry> readZip(String path) throws IOException {			

		ZipInputStream zis = new ZipInputStream(new FileInputStream(path));

		ZipEntry entry;

		ArrayList<ZipEntry> entries = new ArrayList<ZipEntry>();

		while((entry = zis.getNextEntry()) != null) {

			if(!entry.getName().endsWith("file_id.diz"))

				entries.add(entry);

		}


		return entries;

	}

}

ZipInputStream (Java 2 Platform SE v1.4.2)

ZipEntry (Java 2 Platform SE v1.4.2)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

eine Möglichkeit wäre die folgende:

public static ArrayList<ZipEntry> readZip(String path) throws IOException {			

		ZipInputStream zis = new ZipInputStream(new FileInputStream(path));

		ZipEntry entry;

		ArrayList<ZipEntry> entries = new ArrayList<ZipEntry>();

		while((entry = zis.getNextEntry()) != null) {

			if(!entry.getName().endsWith("file_id.diz"))

				entries.add(entry);

		}


		return entries;

	}

}

ZipInputStream (Java 2 Platform SE v1.4.2)

ZipEntry (Java 2 Platform SE v1.4.2)

Klingt logisch...

Nur: Wie implementiere ich das nun in meinen Code?

ich benötige als 'result' einen java.io.InputStream.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Habe es herausgefunden:

   if (name.toLowerCase().endsWith(".zip")) {

          ZipEntry entry;

          ZipInputStream str = new ZipInputStream(result);

            while((entry = str.getNextEntry()) != null) {

                System.out.println("Reading " + entry.getName());

                if(!entry.getName().toLowerCase().endsWith(".diz"))

                    return str;

            }

   }

Danke für die Hilfe.

Bearbeitet von Devilmarkus
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

zum Beispiel indem du ZipFile anstatt ZipInputStream verwendest. Du bekommst so allerdings nur die erste Datei geliefert, insofern diese nicht file_id.diz heißt, ansonsten null.

public InputStream readZip(String path) throws IOException {			

		ZipFile zip = new ZipFile(path);

		ZipEntry entry;

		while(zip.entries().hasMoreElements()) {

			if(!(entry = zip.entries().nextElement()).getName().endsWith("file_id.diz"))

				return zip.getInputStream(entry);

		}


		return null;

	}

Link zu diesem Kommentar
Auf anderen Seiten teilen

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...