1. ホーム
  2. c#

[解決済み] 文字列からストリームを生成するにはどうすればよいですか?

2022-03-17 05:31:12

質問

私は、テキストファイルから来るストリームを取るメソッドのためのユニットテストを書く必要があります。私はこのようなことをしたいです。

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を使うことを忘れないでください。

using (var stream = GenerateStreamFromString("a,b \n c,d"))
{
    // ... Do stuff to stream
}


について StreamWriter が廃棄されない。 StreamWriter はベースストリームの単なるラッパーであり、廃棄される必要のあるリソースは一切使用しません。そのため Dispose メソッドは、基礎となる Stream その StreamWriter が書き込まれています。この場合、それは MemoryStream を返したい。

.NET 4.5では、このメソッドのオーバーロードとして StreamWriter しかし、このコードは同じことを行い、他のバージョンの.NETでも動作します。

参照 BaseStreamを閉じることなくStreamWriterを閉じる方法はありますか?