Frage

Gibt es trotzdem in Dot Net Zip, dass ich alle die Namen der Dateien in einem bestimmten Verzeichnis zur Liste verwenden kann? Zum Beispiel kann ich Directory1 angeben und File3 und Datei4 etc

erhalten
ZipFile
-------

File1
File2
Directory1
     File3
     File4
Directory2
     File5
     File6

ZipFile Objekt hat nur Einträge, Einträge sortieren und Einträge Dateinamen ...

Wer ?, Cheeso? :)

War es hilfreich?

Lösung

Nein, und ja. Es gibt keine EntriesInDirectory Sammlung. Aber es ist einfach eine Frage des String-Vergleichs Einträge auszuwählen, dass „gehört“ in einem bestimmten Verzeichnis.

In LINQ sieht es wie folgt aus:

var selection = from e in zip.Entries 
    where e.FileName.StartsWith(directoryName)
    select e;

In einer for-Schleife sieht es wie folgt aus:

var list = new List<ZipEntry>();
foreach (var e in zip.Entries) {
  if (e.FileName.StartsWith(directoryName)) {
    list.Add(e);
  }
}

Bearbeiten

Sie müssen möglicherweise Conversions für Groß- und Kleinschreibung tun. Unter Windows Fall ist in Dateinamen nicht sinnvoll.

Weitere Erläuterung: das ZIP-Format behandelt keinen Verzeichnis Eintrag in der Zip-Datei als Container. Es gibt keine Behälter Beziehung zwischen Verzeichniseinträge und Dateieinträge. Der einzige Weg, zu sagen, ob ein Dateieintrag „gehört in“ einem bestimmten Verzeichnis ist der vollständige Name des Dateieintrag zu untersuchen. Wenn der Name des Eintrags mit dem Namen des Verzeichnisses, in Frage beginnt, dann ist der Eintrag „in“ das Verzeichnis.

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