StreamReader中的不明确的换行符

时间:2010-01-25 18:31:10

标签: c# streamwriter

当我使用StreamWriter.WriteLine编写时,它将CRLF添加到字符串并将其发送(到SerialPort)。

当我使用StreamReader.ReadLine读取同一个C#程序中的字符串时,它只读取第一个(char)13.ToString()表示的第一个CR,而不读取由第一个(char)13.ToString()表示的CRLF。 (char)13.ToString()+(char)10.ToString()组合。

string messageHeader = ((char)2).ToString() + 
      @"1H|\^&|REMISOL|P|1|20010212161505SS" + 
      ((char)13).ToString() + 
      ((char)3).ToString() + 
      "E5" + 
      ((char)13).ToString() + 
      ((char)10).ToString();

如何将其读取到最后的CRLF块,而不是停在CR?

感谢。

3 个答案:

答案 0 :(得分:4)

StreamReader.ReadLine的文档说明:一行被定义为一个字符序列,后跟一个换行符(“\ n”),一个回车符(“\ r”)或一个回车符后面紧跟一个换行符(为 “\ r \ n” 个)

在手动遇到\ r \ n之前,您需要使用读取和读取。

答案 1 :(得分:1)

StreamReader.ReadLine()读取但不包括下一个CR,LF或CRLF。我只是在你的示例代码上尝试了它,它返回2行,读取并且不包括尾随的CRLF。如果这不是您所看到的,那么您的StreamReader会有所不同,您必须向我们展示重复问题的完整代码。

这是你所看到的,它不是你想要的,你必须更详细地描述这个问题。

答案 2 :(得分:0)

如果您正在使用SerialPort class,则可以手动将NewLine property设置为您需要的任何内容(默认情况下为LF(字符10))