Получить остатки от StreamReader - PullRequest
0 голосов
/ 24 августа 2011

У меня есть потоковый ридер, который я использую для чтения строк из потока. Это работает хорошо, однако я хотел бы иметь возможность получить последнюю строку, которая никогда не закончится переводом строки, поэтому readLine () не будет ее захватывать.

Я сохраню это глобальная переменная и добавлю в поток перед следующим запуском.

Возможно ли это вообще?

void readHandler(IAsyncResult result)
{
    tcpClient = (TcpClient)result.AsyncState;
    StreamReader reader ;
    string line;
    using (reader = new StreamReader(stream))
    {
        while((line = reader.ReadLine()) != null){
            System.Diagnostics.Debug.Write(line);
            System.Diagnostics.Debug.Write("\n\n");
        }

    }
    getData();
}    

Ответы [ 2 ]

1 голос
/ 24 августа 2011

ReadLine делает захватывает последнюю строку потока, даже если после него нет перевода строки. Например:

using System;
using System.IO;

class Test
{
    static void Main()
    {
        string text = "line1\r\nline2";

        using (TextReader reader = new StringReader(text))
        {
            string line;
            while((line = reader.ReadLine()) != null)
            {
                Console.WriteLine(line);
            }
        }
    }
}

Печать:

line1
line2

ReadLine() будет только возвращать null, когда он достигнет конца потока и вернет все данных.

0 голосов
/ 24 августа 2011

Если вам действительно не нужно делать это построчно, вы можете покончить со всем этим циклом и просто использовать метод StreamReader.ReadToEnd .Это даст вам все, что в данный момент находится в буфере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...