问题描述
如何将文本文件从zip存档解压缩为字符串?
文本文件是否还需要MemoryStream
或StreamReader
像图像二进制文件一样?
特别是:
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