[C#][Q] Zip-Files erkennen und entpacken

  • Yo, Leute :D


    Ich wollte mich in nächster Zeit an ein neues Feature für den RHR-Patcher zu setzen.
    Es soll eine neue Klasse erstellt werden, welche Versionen downloaden kann.
    Es soll auch automatisch erkannt werden, was mit der gedownloadeten Datei passieren soll und genau das ist meine Problemstelle:
    Ich habe bereits eine Methode, welche ausliest, ob die gedownloadete Datei ein Patch ist. Jedoch will ich auch die Funktion, dass ab jetzt auch ZIP-Dateien automatisch gehandelt werden.
    Für die Dekompression will ich SharpZipLib verwenden.


    Frage:
    Wie kann ich erkennen, ob die gedownloadete Datei von SharpZipLib dekomprimiert werden kann bzw. dass sie tar, gzip, zip oder sonst 'was ist...?
    Vielen Dank für die Hilfe im Voraus! :thumbsup:


    MfG


    Manu

  • Moin,


    spontan würde ich dir vorschlagen, den File-Header zu überprüfen. Wie der bei ZIP-Dateien aufgebaut ist kannst du hier nachlesen. Für die anderen Archivformate sollte es genauso gehen.


    beoscher

  • Vielen Dank
    Ich werde versuchen, es so umzusetzen :D
    Aber erst muss ich mich 'ne Runde hinlegen... Das erste Mal in meinem Leben, dass ich das um diese Zeit tue, aber... Ich bin soooo kaputt von dieser Woche xP

  • Geh aber nicht davon aus, dass alle Dateien die einen passenden Header haben, Zip-Dateien sind, oder dass ZIP-Dateien immer diesen Header haben. Den Anfang einer ZIP-Datei könnte man mit den ersten zwei Bytes identifieren, aber eine Textdatei die mit PK anfängt (das sind nämlich diese Bytes) würde auf dem Weg auch als ZIP-Datei erkannt werden.


    Außerdem kann vor oder nach den ZIP-Daten noch alles mögliche stehen. Damit kann vor der eigentlichen Zip-Datei z.B. noch eine komplett andere Datei stehen (https://en.wikipedia.org/wiki/…n_with_other_file_formats).


    Du wirst also nicht drumherum kommen, Fehler von der Bibliothek abzufangen. Eigentlich kann die Bibliothek aber auch selber überprüfen, ob die Datei eine ZIP-Datei ist.