StreamReader.ReadToEnd() returning an empty string

后端 未结 3 508
一向
一向 2020-12-17 18:00

I have a method

private static String DecompressAndDecode(byte[] data)
{
   GZipStream decompressor = new GZipStream(new MemoryStream(data), CompressionMode.         


        
3条回答
  •  既然无缘
    2020-12-17 18:14

    "There must be something obvious I'm missing here." - maybe, and so am I ;-)
    Let's start with a little self-contained example and see where it differs from your actual code.

    class SOTest
    {
      private static String DecompressAndDecode(byte[] data)
      {
        GZipStream decompressor = new GZipStream(new MemoryStream(data), CompressionMode.Decompress);
        StreamReader decompressed = new StreamReader(decompressor, Encoding.UTF8);
        String result = decompressed.ReadToEnd();
        return result;
      }
    
      private static byte[] foo(string data)
      {
        MemoryStream dest = new MemoryStream();
        using (GZipStream compressor = new GZipStream(dest, CompressionMode.Compress))
        {
          using (StreamWriter sw = new StreamWriter(compressor))
          {
            sw.Write(data);
          }
        }
        return dest.GetBuffer();
      }
    
    
      static void Main()
      {
        System.Console.WriteLine(
          DecompressAndDecode(foo("Mary had a little lamb."))
        );
        return;
      }
    }
    

    prints Mary had a little lamb.

提交回复
热议问题