Rekursives Auslesen von Zipfiles im Zipfile
Hallo,
ich möchte den Inhalt von Zipdateien mit C# auslesen.
Das funktioniert schon soweit.
Aber: Das Zipfile kann außer Dateien auch noch Ordner und andere Zipfiles mit Dateien und Unterordnern enthalten.
Leider habe ich keine Idee was hier zu tun ist.
Vielleicht könnt ihr mir da weiter helfen.
Vielen Dank schon mal im Voraus
ich möchte den Inhalt von Zipdateien mit C# auslesen.
Das funktioniert schon soweit.
Aber: Das Zipfile kann außer Dateien auch noch Ordner und andere Zipfiles mit Dateien und Unterordnern enthalten.
Leider habe ich keine Idee was hier zu tun ist.
Vielleicht könnt ihr mir da weiter helfen.
Vielen Dank schon mal im Voraus
private void ReadFilesInZipFile(FileInfo zipFile)
{
using (var fileStream = System.IO.File.Open(zipFile.FullName, System.IO.FileMode.Open))
{
var parentArchive = new ZipArchive(fileStream);
var result = from currEntry in parentArchive.Entries
where !String.IsNullOrEmpty(currEntry.Name)
select currEntry;
foreach (var entry in result)
{
//DateiInformationen lesen und in Datenbank schreiben
}
}
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 361953
Url: https://administrator.de/contentid/361953
Ausgedruckt am: 16.11.2024 um 11:11 Uhr
3 Kommentare
Neuester Kommentar
Rufe deine Funktion rekursiv auf, also in deiner Funktion prüfst du per if-else ob es ein Ordner ist oder ein Zipfile. Ob es ein Ordner ist bekommst du aus der Eigenschaft IsFolder des entries. Ist es kein Ordner sondern eine Datei mit der Endung ZIP dann entpackst du dieses Entry und rufst dann mit dem FileInfo deine Methode erneut auf. Dritter IF-ELSEIF Fall: Es ist eine Reguläre Datei, dort machst du dann deine Verarbeitung in die DB.
Fertig ist die Kiste.
Einfaches Prinzip. Deine Methode ruft sich aus sich selbst erneut auf, so arbeitet man sich rekursiv durch alle entries.
Gruß Sepp.
Fertig ist die Kiste.
Einfaches Prinzip. Deine Methode ruft sich aus sich selbst erneut auf, so arbeitet man sich rekursiv durch alle entries.
Gruß Sepp.
Da fehlt aber noch das Prüfen des Entries ob es ein Ordner im Zipfile ist, s. Hinweis oben.
Und das
https://msdn.microsoft.com/de-de/library/dy85x1sa(v=vs.110).aspx
Und das
entry.Name.Contains(".zip")
Ist nicht dein Ernst?? Dafür gibt es die Methode IO.Path.GetExtension, denn sonst matcht er dir auch Dateien ala blablup.zip.xyz und auch nicht Dateien mit blablub.ZIP , contains ist case sensitive.https://msdn.microsoft.com/de-de/library/dy85x1sa(v=vs.110).aspx