939 votes

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

Je dois écrire un test unitaire pour une méthode qui prend un flux qui provient d'un fichier txt, je voudrais faire quelque chose comme ça:

 Stream s = GenerateStreamFromString("a,b \n c,d");
 

1156voto

Cameron MacFarland Points 27240
 public Stream GenerateStreamFromString(string s)
{
    MemoryStream stream = new MemoryStream();
    StreamWriter writer = new StreamWriter(stream);
    writer.Write(s);
    writer.Flush();
    stream.Position = 0;
    return stream;
}
 

Ne pas oublier d'utiliser

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

919voto

joelnet Points 1762

Une autre solution:

 private MemoryStream GenerateStreamFromString(string value)
{
    return new MemoryStream(Encoding.UTF8.GetBytes(value ?? ""));
}
 

117voto

Josh G Points 7547

Ajoutez ceci à une classe d'utilitaire de chaîne statique:

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

Cela ajoute une fonction d'extension afin que vous puissiez simplement:

 using ("My string".ToStream())
{
    // use stream
}
 

58voto

Warlock Points 2253
public Stream GenerateStreamFromString(string s)
{
    return new MemoryStream(Encoding.UTF8.GetBytes(s));
}

26voto

Tim Robinson Points 28696

Utilisation la classe, appeler pour transformer votre chaîne en un tableau d’octets première.

Vous avez besoin par la suite une sur le flux ? Si donc, vous pourriez fournir un directement et contourner les et comme suit.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X