C#使用SharpZipLib将存档中的文本文件.GetInputStream解压缩为字符串

问题描述

如何将文本文件从zip存档解压缩为字符串?

文本文件是否还需要MemoryStreamStreamReader像图像二进制文件一样?

特别是:

        foreach (ZipEntry e in zipFile)
        {
            if (e.IsFile)
            {
                string ext = Path.GetExtension(e.Name).ToLower();
                print(ext + " " + e.Name);
                if (ext == ".jpg" || ext == ".png" || ext == ".tga")
                {
                    Texture2D tex = new Texture2D(1,1);
                    Stream zipStream = zipFile.GetInputStream(e);
                    tex.LoadImage(ReadFully(zipStream));

                    dicTexture.Add(e.Name,tex );
                } else if (ext == ".txt")
                {
                    Stream zipStream = zipFile.GetInputStream(e);
                    dicTxt.Add(e.Name,Encoding.Default.GetString(zipStream.)); // how do you populate this string here? 
                }
            }
        }


public static byte[] ReadFully(Stream input)
    {
        byte[] buffer = new byte[16 * 1024];
        using (MemoryStream ms = new MemoryStream())
        {
            int read;
            while ((read = input.Read(buffer,buffer.Length)) > 0)
            {
                ms.Write(buffer,read);
            }
            return ms.ToArray();
        }
    }

解决方法

与任何流一样,您可以使用环绕流的StreamReader并调用ReadToEnd

using(var x = new StreamReader(stream)){
  var theString =  x.ReadToEnd();
  //use theString
}

如果要指定编码,请为此constructor can take a second parameter