Wie Sie mit der Entpackungs-ZIP-Datei mit Pfaden umgehen können, die zu lang sind / dupliziert sind

StackOverflow https://stackoverflow.com//questions/10677405

  •  12-12-2019
  •  | 
  •  

Frage

Wenn Sie Dateien in Windows entkoppeln, habe ich gelegentlich Probleme mit Pfaden

    .
  1. das ist zu lang für Windows (aber okay in der ursprünglichen Betriebssysteme, die die Datei erstellt hat).
  2. das sind "Duplikat" aufgrund von Fallindivität

    Verwenden von dotnetziP, der generationspflichtige Anruf wird beim Lesen von ZIP-Dateien mit einem dieser Probleme ausgelesen. Was bedeutet, dass ich nicht einmal versuchen kann, es herauszufiltern. generasacodicetagpre.

    Was ist der beste Weg, um mit dem Lesen dieser Art von Dateien zu handhaben?

    aktualisiert:

    Beispiel ZIP von hier: https://github.com/monoreports/monoreports/zipball/master

    Duplikate: https://github.com/monoreports/monoreports/tree/master/src/ Monoreports.model / datasourcetype.cs https://github.com/monoreports/monoreports/tree/master/src/monoreports.model/dataSourcetype.cs

    Hier ist näher auf der Ausnahme:

    ionic.zip.zipexception: Kann das nicht als Zipfel lesen, ---> system.argumentException: Ein> Artikel mit demselben Schlüssel wurde bereits hinzugefügt.
    bei System.Throwhelper.throwargumentException (AusnahmeResource-Ressource)
    bei System.Collections.Generic.DictionaryZipFile.Read(path)2.add (T-T-Taste, TValue-Wert)
    bei ionic.zip.zipfile.readcentralDirectory (Zipfle ZF)
    bei ionic.zip.zipfile.Readintoinstance (zippe ZF)

    Auflösung:

    Basierend auf @ Cheesos-Vorschlag, ich kann alles vom Bach lesen, diejenigen, die Duplikate vermeiden, und Pfadprobleme: generasacodicetagpre.

War es hilfreich?

Lösung

Lesen Sie es mit Zipinputstream.

Die ZIPFILE-Klasse hält eine Sammlung mit dem Dateinamen als Index.Doppelte Dateinamen bricht das Modell.

Sie können jedoch den Zipinputstream verwenden, um in Ihrem ZiPFile zu lesen.In diesem Fall gibt es keine Sammlung oder Index.

Andere Tipps

Für das GRATIONACDICETAGCODE-Problem habe ich festgestellt, dass Sie dotnetzip nicht verwenden können.Was ich stattdessen tat, wurde die Befehlszeilenversion von 7-zip ;Das funktioniert Wunder. generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top