从StreamReader获取残余

时间:2011-08-24 12:50:42

标签: c# streamreader

我有一个流阅读器,用于从流中读取行。这很好用但是我希望能够获得最后一行,它永远不会以换行符结束,因此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 个答案:

答案 0 :(得分:1)

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,当它到达流的末尾并返回所有数据时。

答案 1 :(得分:0)

除非您确实需要逐行执行此操作,否则您可以取消整个循环并使用StreamReader.ReadToEnd方法。这将为您提供当前缓冲区中的所有内容。