Comment générer un flux à partir d'une chaîne ?

Comment générer un flux à partir d’une chaîne ?

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;
}

N’oubliez pas d’utiliser Using :

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

À propos du StreamWriter qui n’est pas disposé. StreamWriter est juste un wrapper autour du flux sous-jacent et n’utilise aucune ressource qui nécessite d’être disposée. La méthode Dispose fermera le Stream sous-jacent dans lequel le StreamWriter écrit. Dans ce cas, c’est le MemoryStream que nous voulons retourner.

Dans .NET 4.5, il existe désormais une surcharge pour StreamWriter 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.

Voir Is there any way to close a StreamWriter without closing its BaseStream?