2011-05-15 1 views
1

J'ai problème avec gzip decomress:problème avec décompressé, GZipStream

string fileData = string.Empty; 
// byte[] starts with 31 and 139 
var gzBuffer = entity.Data.Skip(pos).ToArray(); 
using (GZipStream stream = new GZipStream(new MemoryStream(gzBuffer),CompressionMode.Decompress)) 
{ 
    const int size = 4096; 
    byte[] buffer = new byte[size]; 
    using (MemoryStream memory = new MemoryStream()) 
    { 
     int count = 0; 
     do 
     { 
      count = stream.Read(buffer, 0, size); 
      if (count > 0) 
      { 
       memory.Write(buffer, 0, count); 
      } 
     } while (count > 0); 
     fileData = Encoding.UTF8.GetString(memory.ToArray()); 
    } 
} 

Dans le débogueur, nombre AllWays égal 0. Où est le problème?
Merci.

+0

Comment ce flux a-t-il été compressé? J'ai aussi rencontré ce problème par le passé et l'erreur était en fait dans la logique de compression. –

+0

avez-vous vérifié gzbuffer? Peut-être que c'est vide. – Saleh

+0

@ Jan-Peter Vos: Je ne peux pas dire avec certitude, car le message provient du web. – user348173

Répondre

0

Je ne sais pas si cela vous sera d'une grande aide, mais je vais essayer. C'est ce que j'ai utilisé dans un exemple de projet pour compresser/décompresser des fichiers avec GZIP. Peut-être pouvez-vous adapter ce code à vos besoins?

public string Compress(FileInfo fi) 
{ 
    string outPath; 

    using (FileStream inFile = fi.OpenRead()) 
    { 
     outPath = fi.FullName + ".gz"; 
     using (FileStream outFile = File.Create(outPath)) 
     { 
      using (var compress = new GZipStream(outFile, 
               CompressionMode.Compress)) 
      { 
       inFile.CopyTo(compress); 
      } 
     } 
    } 

    return outPath; 
} 

public void Decompress(FileInfo fi) 
{ 
    using (FileStream inFile = fi.OpenRead()) 
    { 
     string curFile = fi.FullName; 
     string origName = curFile.Remove(curFile.Length - fi.Extension.Length); 

     using (FileStream outFile = File.Create(origName)) 
     { 
      using (var decompress = new GZipStream(inFile, 
                CompressionMode.Decompress)) 
      { 
       decompress.CopyTo(outFile); 
      } 
     } 
    } 
} 
Questions connexes