Liste aller Dateien in einem Verzeichnis mit Dot Net Zip?
-
25-09-2019 - |
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
erhaltenZipFile
-------
File1
File2
Directory1
File3
File4
Directory2
File5
File6
ZipFile Objekt hat nur Einträge, Einträge sortieren und Einträge Dateinamen ...
Wer ?, Cheeso? :)
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.