加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 调用Stream.Write和使用StreamWriter有什么区别?

发布时间:2020-12-15 17:48:15 所属栏目:百科 来源:网络整理
导读:实例化Stream对象(如MemoryStream)和调用memoryStream.Write()方法写入流之间以及使用流实例化StreamWriter对象并调用streamWriter.Write()有什么区别? 考虑以下情况: 你有一个方法来接收一个Stream,写入一个值并返回它.流从稍后读取,所以位置必须重置.有
实例化Stream对象(如MemoryStream)和调用memoryStream.Write()方法写入流之间以及使用流实例化StreamWriter对象并调用streamWriter.Write()有什么区别?

考虑以下情况:

你有一个方法来接收一个Stream,写入一个值并返回它.流从稍后读取,所以位置必须重置.有两种可能的方法(两者似乎都有效).

// Instantiate a MemoryStream somewhere
//     - Passed to the following two methods
MemoryStream memoryStream = new MemoryStream();

// Not using a StreamWriter
private static Stream WriteToStream(Stream stream,string value)
{
    stream.Write(Encoding.Default.GetBytes(value),value.Length);
    stream.Flush();
    stream.Position = 0;
    return stream;
}

// Using a StreamWriter
private static Stream WriteToStreamWithWriter(Stream stream,string value)
{
    StreamWriter sw = new StreamWriter(stream);
    sw.Write(value,value.Length);
    sw.Flush();
    stream.Position = 0;
    return stream;
}

这部分是范围问题,因为我不想在写入之后关闭流,因为它将从以后读取.我也当然不想处理它,因为这将关闭我的流.差异似乎是没有使用StreamWriter引入了对Encoding.Default的直接依赖,但我不知道这是一个很大的事情.有什么区别?

解决方法

使用StreamWriter,您具有更高级别的重载,可以将各种类型写入流中,而无需担心细节.例如你的代码
sw.Write(value,value.Length);

实际上可以是

sw.Write(value);

使用StreamWriter.Write(string)重载.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读