0 votes

Comment puis-je déterminer la taille de mon tampon lorsque j'utilise GzipStream ?

J'essaie de décompresser un GZipStream. Le problème est que la propriété "Length" du flux génère une exception "NotSupported". Comment puis-je savoir quelle taille donner à mon tampon lorsque je lis les octets du flux ? Comme il est compressé, je ne sais pas quelle sera la taille de la version non compressée. Avez-vous des suggestions ?

4voto

leppie Points 67289

Pourquoi avez-vous besoin de ça ?

public static byte[] Decompress(this byte[] data)
{
  var ms = new MemoryStream(data);
  var s = new GZipStream(ms, CompressionMode.Decompress);

  var output = new MemoryStream();
  byte[] buffer = new byte[8192];
  int read = 0;
  while ((read = s.Read(buffer, 0, buffer.Length)) > 0)
  {
    output.Write(buffer, 0, read);
  }

  return output.ToArray();
}

0voto

Rune Grimstad Points 17775

En fonction de ce que vous allez en faire, vous pouvez écrire le contenu non compressé dans un MemoryStream ou un FileStream. Ils peuvent tous deux être configurés pour étendre leurs tampons si nécessaire.

Le MemoryStream possède également une méthode ToArray qui extrait son contenu sous forme de tableau d'octets.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X