ストリームに書き込むためのメソッドを呼び出すStream
などのオブジェクトのインスタンス化と、ストリームを使用してオブジェクトをインスタンス化して呼び出すことの違いは何ですか?MemoryStream
memoryStream.Write()
StreamWriter
streamWriter.Write()
次のシナリオを検討してください。
Streamを受け取り、値を書き込んで、それを返すメソッドがあります。ストリームは後で読み取られるため、位置をリセットする必要があります。それを行うには2つの方法があります(どちらも機能するようです)。
// 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;
}
後で読み取られるので、ストリームに書き込んだ後にストリームを閉じたくないので、これは部分的にスコープの問題です。私も確かにそれを処分したくありません、なぜならそれは私のストリームを閉じるからです。違いは、StreamWriterを使用しないと、Encoding.Defaultに直接依存するように見えることですが、それが非常に大きな問題であるかどうかはわかりません。もしあれば、違いは何ですか?