텍스트 파일에서 오는 스트림을 취하는 메소드에 대한 단위 테스트를 작성해야합니다. 나는 이런 식으로하고 싶다 :
Stream s = GenerateStreamFromString("a,b \n c,d");답변
public static Stream GenerateStreamFromString(string s)
{
    var stream = new MemoryStream();
    var writer = new StreamWriter(stream);
    writer.Write(s);
    writer.Flush();
    stream.Position = 0;
    return stream;
}
다음을 사용하는 것을 잊지 마십시오.
using (var stream = GenerateStreamFromString("a,b \n c,d"))
{
    // ... Do stuff to stream
}
StreamWriter처분되지 않는 것에 대해 . StreamWriter기본 스트림을 감싸는 래퍼 일 뿐이므로 처리해야 할 리소스를 사용하지 않습니다. 이 Dispose메소드 는 쓰는 기본 Stream을 닫습니다 StreamWriter. 이 경우에 MemoryStream우리 는 돌아 가고자합니다.
.NET 4.5에는 이제 StreamWriter작성자가 폐기 된 후에 기본 스트림을 열어 두는 과부하 가 있지만이 코드는 동일한 기능을 수행하며 다른 버전의 .NET에서도 작동합니다.
답변
다른 해결책 :
public static MemoryStream GenerateStreamFromString(string value)
{
    return new MemoryStream(Encoding.UTF8.GetBytes(value ?? ""));
}
답변
이것을 정적 문자열 유틸리티 클래스에 추가하십시오.
public static Stream ToStream(this string str)
{
    MemoryStream stream = new MemoryStream();
    StreamWriter writer = new StreamWriter(stream);
    writer.Write(str);
    writer.Flush();
    stream.Position = 0;
    return stream;
}
확장 기능이 추가되어 간단하게 수행 할 수 있습니다.
using (var stringStream = "My string".ToStream())
{
    // use stringStream
}
답변
public Stream GenerateStreamFromString(string s)
{
    return new MemoryStream(Encoding.UTF8.GetBytes(s));
}답변
MemoryStream클래스를 사용 Encoding.GetBytes하여 문자열을 먼저 바이트 배열로 변환하십시오.
나중에 TextReader스트림에 필요 합니까? 그렇다면 StringReader직접 제공 하고 MemoryStream및 Encoding단계를 무시할 수 있습니다.
답변
나는 다음과 같은 답변을 혼합하여 사용했습니다.
public static Stream ToStream(this string str, Encoding enc = null)
{
    enc = enc ?? Encoding.UTF8;
    return new MemoryStream(enc.GetBytes(str ?? ""));
}그리고 나는 이것을 다음과 같이 사용합니다 :
String someStr="This is a Test";
Encoding enc = getEncodingFromSomeWhere();
using (Stream stream = someStr.ToStream(enc))
{
    // Do something with the stream....
}답변
아래에 나열된 확장 방법을 사용합니다. 개발자가 인코딩에 대한 결정을 내릴 수 있도록해야하므로 마술이 적습니다.
public static class StringExtensions {
    public static Stream ToStream(this string s) {
        return s.ToStream(Encoding.UTF8);
    }
    public static Stream ToStream(this string s, Encoding encoding) {
        return new MemoryStream(encoding.GetBytes(s ?? ""));
    }
}