과 같이 Stream
개체를 인스턴스화하고 memoryStream.Write()
메서드를 호출하여 스트림에 쓰기를 수행하고 StreamWriter
개체를 스트림으로 인스턴스화하고 streamWriter.Write()
을 호출하는 것의 차이점은 무엇입니까?StreamWriter를 호출하는 것과 StreamWriter를 사용하는 것의 차이점은 무엇입니까?
다음과 같은 시나리오를 생각해보십시오 :
당신은 스트림을 취하는 값을 기록하고 그것을 반환하는 방법이있다. 나중에 스트림을 읽으므로 위치를 재설정해야합니다. 그것을 할 수있는 두 가지 방법이 있습니다 (둘 다 작동하는 것 같습니다).
// 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에 직접적인 종속성이 있음을 알 수 있습니다. 그러나 이것이 매우 큰 문제인지는 잘 모르겠습니다. 차이점은 무엇입니까?
StreamWriter는 Stream이 아닌 TextWriter에서 유래합니다. 대신 StreamWriter가 Streams와 TextWriters 사이의 어댑터라고 말하는 것이 맞을 것입니다. – nlaq