小编Mat*_*rke的帖子

无缓冲的StreamReader

有没有办法让StreamReader不做任何缓冲?

我正在尝试处理可能是二进制或文本的进程的输出.输出看起来像HTTP响应,例如

Content-type: application/whatever
Another-header: value

text or binary data here
Run Code Online (Sandbox Code Playgroud)

我想要做的是使用a解析标题StreamReader,然后从其中读取BaseStreamStreamReader处理其余内容.这基本上是我开始的:

private static readonly Regex HttpHeader = new Regex("([^:]+): *(.*)");
private void HandleOutput(StreamReader reader)
{
  var headers = new NameValueCollection();
  string line;
  while((line = reader.ReadLine()) != null)
  {
    Match header = HttpHeader.Match(line);
    if(header.Success)
    {
      headers.Add(header.Groups[1].Value, header.Groups[2].Value);
    }
    else
    {
      break;
    }
  }
  DoStuff(reader.ReadToEnd());
}
Run Code Online (Sandbox Code Playgroud)

这似乎是垃圾二进制数据.所以我把最后一行改成了这样的东西:

if(headers["Content-type"] != "text/html")
{
  // reader.BaseStream.Position is not at the same place that reader
  // makes it looks …
Run Code Online (Sandbox Code Playgroud)

c# stream

19
推荐指数
2
解决办法
4451
查看次数

标签 统计

c# ×1

stream ×1