Hmm..
Das Problem ist leider, das der Header zwischen nur wenigen Bytes bis hin zu KB (mit
XML-EXIF Daten) aufgeblasen werden kann.
Meist stehen diese dann noch am Anfang und die $Cx kommen zum Schluss des Headers....
Ich weiß auch nicht zu 100% wie der FileStream dies intern händelt..
Puffert dieser, oder liest gleich Blockweise ?
Nein, er puffert überhaupt nicht, er liest die Blöcke so, wie die Read-Aufrufe es vorgeben. Nur der Windows-Cache sitzt dann noch dazwischen, und der bringt beim ersten Lesen nicht viel.
Ich habe mir eine
Stream-Cache Klasse geschrieben, die das für mich übernimmt. Allerdings würde ich die in solch einer Funktion nicht verwenden, denn das würde wieder eine Abhängigkeit schaffen, die man da nicht unbedingt haben will.
(Andererseits: Wenn ich eine Funktion in meiner dzlib habe, die davon profitieren würde, habe ich kein Problem damit den Stream-Cache zu verwenden, schließlich ist er ja selbst Teil der Bibliothek.)
Falls sich jemand den Code ansehen will: Die verlinkte Seite verweist noch auf Sourceforge,
dzlib ist aber inzwischen auf
OSDN.