Je lis un fichier (un swf flash) de .Net 3.5 qui a un en-tête qui indique si le corps du fichier/Stream est compressé ou non. Cependant, j'ai des problèmes - après avoir réemballé le flux de fichiers de base dans un GZipStream, je reçois une exception indiquant que "Le nombre magique dans l'en-tête de GZip n'est pas correct. Assurez-vous que vous passez dans un flux GZip." Même s'il se peut que je ne comprenne pas comment le fichier SWF est formaté (la documentation d'Adobe indique seulement que le corps est "compressé à l'aide du standard ouvert ZLIB." Le format de données utilisé par la bibliothèque ZLIB est décrit dans Request for Commentaires (RFC) documents 1950 à 1952. "), il se peut aussi que je ne comprends pas comment fonctionne GZipStream.Décompression des portions compressées ZLIB d'un fichier binaire
Donc, ma question est double: 1) GZipStream fonctionnera-t-il généralement correctement lorsqu'il est remis à un flux parent qui a déjà été lu?
2) GZipStream fonctionne-t-il avec des données compressées de cette manière? Et sinon, y a-t-il d'autres librairies open source que vous recommanderiez d'utiliser?
merci.
Pour votre information, voici le Snipped du code correspondant (F #):
let reader= match signature with
|['F';'W';'S']-> //uncompresssed
reader
|['C';'W';'S']->
let gzs= new System.IO.Compression.GZipStream(reader.BaseStream, System.IO.Compression.CompressionMode.Decompress)
new BinaryReader(gzs)
|_-> failwith "something is invalid in this header"
let frameSB = List.nth ((reader.PeekChar()|>BitConverter.GetBytes)|>List.ofArray) 0 in
let frameSize = frameSB&&&31uy |> (+) 5uy |> fun fs-> fs+ 8uy-(fs%8uy) //rect data structure....
Merci pour l'aide Steve! Le port du port de ZLib semble avoir fait le tour! C'est logique, en fait: le compilateur Flash ActionScript 3 est écrit en Java. –