Entwickler-Ecke
Sonstiges (.NET) - Container-Datei erstellen
VampireSilence - Sa 16.03.13 22:56
Titel: Container-Datei erstellen
Hallo Zusammen,
ich habe eine generelle Frage zur Erstellung von Container-Dateien. Ich möchte mehrere Dateien beliebigen Inhalts in eine Container-Datei verpacken, so wie es z. B. in *.zip-Dateien der Fall ist.
Mein erster Ansatz war sehr simpel, denn ich könnte ja einfach alle Dateien hintereinander schreiben und mit einem Trennwort trennen, z. B. "**NEXT FILE**", wenn aber eine Datei diese Textpassage enthält, so wird sie zerteilt. Also keine gute Idee.
Meine zweite Idee war alle Dateien zunächst in einen Base64-Hash umzuwandeln und dann nur Zeichen zur Trennung zu verwenden, die keinem dieser 64 entsprechen. Damit würden auch direkt die 0x00-Zeichen verschwinden, die in Strings auch schonmal Probleme machen können. Aber hier habe ich es direkt etwas einfacher gemacht und nur ein einziges Zeichen zur Trennung verwendet, wobei ich dieses innerhalb der Dateien escaped habe, sodass es dort nicht mehr vorkommen kann.
Und an diesem Punkt fällt mir leider nichts Besseres ein. Trotzdem finde ich die Lösung noch nicht sehr sauber und da ich ja nicht der Erste bin, der Container-Dateien erstellt, möchte ich um Tipps bitten, wie man ein solches Problem auf die beste Art und Weise löst.
Gruß und danke schonmal im Voraus
- VampireSilence
Christian S. - So 17.03.13 00:27
Spricht etwas dagegen, wirklich eine ZIP-Datei zu verwenden?
VampireSilence - So 17.03.13 14:23
Vom Funktionsprinzip her nicht, allerdings möchte ich im Anschluss noch bestimmte Dinge beeinflussen können, die in einer echten *.zip-Datei unnötig kompliziert würden. Deshalb wäre es mir sehr wichtig das Containerformat von Grund auf selbst zu definieren.
Gruß
- VampireSilence
Kha - Mo 18.03.13 02:37
Vor die Daten jeweils die Länge dieser in Byte schreiben und gut ist ;) . So macht das jedes Protokoll.
san-software - Mo 18.03.13 15:03
Man könnte natürlich auch ganz am Anfang des Files ein kleines Inhaltsverzeichnis stellen, mit Name der Datei, Offset und Länge der Datei. dann muß man nicht immer den ganzen Containter durchsuchen, wenn man eine Bestimmte datei haben will.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!