Obtenir la longueur de Streamreader

Comment puis-je obtenir la longueur d'une StreamReader, comme je sais que rien ne sera écrit plus.
J'ai pensé que peut-être je pourrais passer toutes les données d'un MemoryStream, qui a une méthode appelée Length, mais je suis coincé sur la façon d'ajouter un byte[] pour un MemoryStream.

private void Cmd(string command, string parameter, object stream)
{
StreamWriter writer = (StreamWriter)stream;
StreamWriter input;
StreamReader output;
Process process = new Process();
try
{
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.FileName = "cmd";
process.Start();
input = process.StandardInput;
output = process.StandardOutput;
input.WriteLine(command + " " + parameter);
input.WriteLine("exit");
using (MemoryStream ms = new MemoryStream())
{
int length = 1024;
char[] charbuffer = new char[length];
byte[] bytebuffer = new byte[length];
while (!output.EndOfStream)
{
output.Read(charbuffer, 0, charbuffer.Length);
for (int i = 0; i < length; i++)
{
bytebuffer[i] = Convert.ToByte(charbuffer[i]);
}
//append bytebuffer to memory stream here
}
long size = ms.Length;
writer.WriteLine(size);
writer.Flush(); //send size of the following message
//send message
}
}
catch (Exception e)
{
InsertLog(2, "Could not run CMD command");
writer.WriteLine("Not valid. Ex: " + e.Message);
}
writer.Flush();
}

Alors, comment puis-je dinamically ajouter un byte[] pour un MemoryStream?
Il est de toute façon mieux que cela pour obtenir la longueur de output afin que je puisse avertir l'autre extrémité de la taille du message qui sera envoyé?

Qu'entendez-vous par sizeou par length?
Lorsque l'on se réfère à tous les deux, je voulais dire la quantité d'octets/caractères sur les variables respectifs.
Je ne comprends pas.. vous avez de la longueur de la bytebuffer.. pourquoi ne pas l'utiliser?
Mais vous êtes en boucle au-dessus du ruisseau jusqu'à EOF.. et de stockage tout en bytebuffer.
encore une remarque, en ajoutant à ma réponse, vous pouvez utiliser m.WriteByte méthode pour écrire chaque octet dans l' MemoryStream à la fois. Cela vous permettrait d'éliminer la bytebuffer à tous.

OriginalL'auteur Bruno Klein | 2013-02-01