Création d'un MemoryStream à partir d'une chaîne en C#
Les tests unitaires nécessitent souvent de simuler des flux d'entrée à partir de fichiers texte. Cet exemple montre une méthode simple et efficace, GenerateStreamFromString
, pour créer un MemoryStream
à partir d'une chaîne.
GenerateStreamFromString
Mise en œuvre
La fonction suivante convertit efficacement une chaîne en MemoryStream
:
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; }
Exemple d'utilisation :
using (var stream = GenerateStreamFromString("a,b \n c,d")) { // Process the stream here }
Gestion de l'élimination de StreamWriter
L'instruction using
supprime automatiquement StreamWriter
, mais cela fermerait également MemoryStream
. Puisque nous devons restituer le MemoryStream
, nous évitons de disposer explicitement de StreamWriter
. La méthode StreamWriter
de Dispose
ferme uniquement le flux sous-jacent, ce qui est le comportement souhaité dans ce scénario.
Cette approche fonctionne sur toutes les versions de .NET, contrairement aux alternatives qui reposent sur les StreamWriter
surcharges introduites dans .NET 4.5 et versions ultérieures. Ces surcharges permettent de garder le flux sous-jacent ouvert après la suppression, mais notre méthode maintient une compatibilité plus large.
Pour plus de détails sur la gestion de la suppression du flux, reportez-vous aux ressources traitant des techniques de fermeture StreamWriter
sans fermer le flux de base.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!