the*_*ist 3 c# stream stringwriter
UnZipFile方法从写入数据inputStream到outputWriter.为什么要sr.ToString()返回System.Byte[]而不是数据?
using (var sr = new StringWriter())
{
UnZipFile(response.GetResponseStream(), sr);
var content = sr.ToString();
}
public static void UnZipFile(Stream inputStream, TextWriter outputWriter)
{
using (var zipStream = new ZipInputStream(inputStream))
{
ZipEntry currentEntry;
if ((currentEntry = zipStream.GetNextEntry()) != null)
{
var size = 2048;
var data = new byte[size];
while (true)
{
size = zipStream.Read(data, 0, size);
if (size > 0)
{
outputWriter.Write(data);
}
else
{
break;
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题在于:
outputWriter.Write(data);
Run Code Online (Sandbox Code Playgroud)
StringWriter.Write没有超负荷期待byte[].因此,Write(Object)被称为.并根据MSDN:
通过调用该对象上的ToString方法,将对象的文本表示写入文本字符串或流.
调用ToString一个字节数组返回System.byte[],解释如何在你的字符串中获取该字符串StringWriter.