title: Get length of Streamreader
body: <p>How can I get the length of a <code>StreamReader</code>, as I know nothing will be written to it anymore.
  I thought that maybe I could pass all the data to a <code>MemoryStream</code>, which has a method called <code>Length</code>, but I got stuck on how to append a byte[] to a <code>MemoryStream</code>.</p>
  
  <pre><code>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 &lt; 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();
          }
  </code></pre>
  
  <p>So, how can I dinamically append a byte[] to a MemoryStream?
  There is any way better than this to get the length of <code>output</code> so I can warn the other end about the size of the message which will be sent?</p>