StreamReader ReadLine() returns empty string, nothing added to list
<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>