title: StreamReader ReadLine() returns empty string, nothing added to list
body: <p>I have a few problems reading from a file to a list.
  The file content is like this:</p>
  
  <pre><code>[ROOM101]
  that way this way no way all the way
  [END]
  [ROOM102]
  all the way that way this way no way
  [END]
  [ROOM103]
  no way all the way that way this way
  [END]
  </code></pre>
  
  <p>And the method looks like this:</p>
  
  <pre><code>public static List&lt;Room&gt; ReadRooms(string path)
  {
      List&lt;Room&gt; rooms = new List&lt;Room&gt;();
      StreamReader reader = new StreamReader(path);
      bool roomsLeft = true;
      char currentChar;
      string directions;
      StringBuilder builder = new StringBuilder();
  
      while (roomsLeft) {
          currentChar = (char)reader.Read();
          if (currentChar == '[') {
              currentChar = (char)reader.Read();
              while (currentChar != ']') {
                  builder.Append(currentChar);
                  currentChar = (char)reader.Read();
              }
              if (builder.ToString() != "END") {
                  directions = reader.ReadLine();
                  rooms.Add(new Room(builder.ToString(), directions));
              }
          }
          if (reader.EndOfStream) {
              roomsLeft = false;
          }
      }
      reader.Close();
  
      return rooms;
  }
  </code></pre>
  
  <p>It reads the first line fine, but <code>directions = ReadLine()</code> returns absolutely nothing, and nothing gets added to the list - shouldn't it jump to the next line and assign to <code>directions</code>?. The whole thing results in a <code>StackOverflowException</code>.</p>