我有一个流阅读器,用于从流中读取行。这很好用但是我希望能够获得最后一行,它永远不会以换行符结束,因此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();
}
答案 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方法。这将为您提供当前缓冲区中的所有内容。