Joh*_*son 15 c# memorystream streamwriter
实例化一个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), 0, 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, 0, value.Length);
sw.Flush();
stream.Position = 0;
return stream;
}
Run Code Online (Sandbox Code Playgroud)
这部分是一个范围问题,因为我不想在写入后关闭流,因为它将在以后读取.我当然也不想处理它,因为这将关闭我的流.差异似乎是不使用StreamWriter引入了对Encoding.Default的直接依赖,但我不确定这是一个非常大的问题.有什么区别,如果有的话?
Chr*_*lor 16
使用StreamWriter,您可以获得更高级别的重载,可以将各种类型写入流,而无需担心细节.例如你的代码
sw.Write(value, 0, value.Length);
Run Code Online (Sandbox Code Playgroud)
实际上可能只是
sw.Write(value);
Run Code Online (Sandbox Code Playgroud)
使用StreamWriter.Write(字符串)重载.
| 归档时间: |
|
| 查看次数: |
14273 次 |
| 最近记录: |