c# - 为什么 StringWriter.ToString 返回 `System.Byte[]` 而不是数据?

标签 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;
                }
            }
        }
    }
}

最佳答案

问题出在线上:

outputWriter.Write(data); 

StringWriter.Write 没有期望 byte[] 的重载。因此,将调用 Write(Object)。并根据MSDN :

Writes the text representation of an object to the text string or stream by calling the ToString method on that object.

在字节数组上调用 ToString 返回 System.byte[],解释如何在 StringWriter 中获取该字符串。

关于c# - 为什么 StringWriter.ToString 返回 `System.Byte[]` 而不是数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12354558/

相关文章:

c# - 在可重用类中封装多个服务引用操作

c# - 我如何根据**货币符号**(如欧元(€)等)将 123456789 转换为 1.234.567,89?

arrays - Kotlin 序列到数组

java - 有什么(任何方式)可以比 StringWriter 更快地连接 java 字符串吗?

c# - String Writer 写入文本文件

c# - HttpContext.User 属性最初设置在哪里?

c++ - 与解析相关的 token 到底是什么

node.js - 如何从 Mongodb 集合中流式传输文档

Java StringWriter toString 处的 StringBuilder 异常

c# - ASP.net 中的列表框工具提示问题