微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。