<pre><code class="lang-auto">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;
}
</code></pre>
<p>N’oubliez pas d’utiliser Using :</p>
<pre><code class="lang-auto">using (var stream = GenerateStreamFromString("a,b \n c,d"))
{
// ... Do stuff to stream
}
</code></pre>
<p>À propos du <code>StreamWriter</code> qui n’est pas disposé. <code>StreamWriter</code> est juste un wrapper autour du flux sous-jacent et n’utilise aucune ressource qui nécessite d’être disposée. La méthode <code>Dispose</code> fermera le <code>Stream</code> sous-jacent dans lequel le <code>StreamWriter</code> écrit. Dans ce cas, c’est le <code>MemoryStream</code> que nous voulons retourner.</p>
<p>Dans .NET 4.5, il existe désormais une surcharge pour <code>StreamWriter</code> qui maintient le flux sous-jacent ouvert après que le writer est disposé, mais ce code fait la même chose et fonctionne avec d’autres versions de .NET aussi.</p>
<p>Voir <a href="https://stackoverflow.com/questions/2666888/is-there-any-way-to-close-a-streamwriter-without-closing-its-basestream">Is there any way to close a StreamWriter without closing its BaseStream?</a></p>