KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I am trying to compress and decompress a Stream using Compression.DeflateStream . Compressing seems to work correctly since the code below compresses my Stream to a 110 bytes long array. However, reading the decompressed Stream results in an empty string. class Program { static void Main(string[] args) { // Compress a random string value string value = Path.GetRandomFileName(); byte[] compressedBytes; using (var writer = new StreamWriter(new MemoryStream())) { writer.Write(value); writer.Flush(); writer.BaseStream.Position = 0; compressedBytes = Compress(writer.BaseStream); } // Decompress compressed bytes Stream decompressedStream = Decompress(compressedBytes); // here already applies: decompressedStream.Length == 0 using (var reader = new StreamReader(decompressedStream)) { string decompressedValue = reader.ReadToEnd(); if (value == decompressedValue) Console.WriteLine("Success"); else Console.WriteLine("Failed"); } } private static byte[] Compress(Stream input) { using (var compressStream = new MemoryStream()) using (var compressor = new DeflateStream(compressStream, CompressionMode.Compress)) { input.CopyTo(compressor); return compressStream.ToArray(); } } private static Stream Decompress(byte[] input) { var output = new MemoryStream(); using (var compressStream = new MemoryStream(input)) using (var decompressor = new DeflateStream(compressStream, CompressionMode.Decompress)) decompressor.CopyTo(output); output.Position = 0; return output; } } Can anyone help
Tags (comma-separated)
Save Edits
Cancel