Cra*_*893 25 c# readline streamreader gedcom
有没有办法提前读取一行来测试下一行是否包含特定的标签数据?
我正在处理一个具有开始标记但没有结束标记的格式.
我想读一行将它添加到一个结构然后测试下面的行,以确保它不是一个新的"节点",如果它不是继续添加,如果它是关闭该结构并创建一个新的
我能想到的唯一解决方案就是让两个流读取器在同一时间沿着锁定步骤出现,但这看起来很浪费(如果它甚至可以工作)
我需要像peek但peekline这样的东西
Nic*_*ong 29
问题是潜在的流可能甚至不可寻求.如果您查看流读取器实现,它会使用缓冲区,因此即使流不可搜索,它也可以实现TextReader.Peek().
您可以编写一个简单的适配器来读取下一行并在内部缓冲它,如下所示:
 public class PeekableStreamReaderAdapter
    {
        private StreamReader Underlying;
        private Queue<string> BufferedLines;
        public PeekableStreamReaderAdapter(StreamReader underlying)
        {
            Underlying = underlying;
            BufferedLines = new Queue<string>();
        }
        public string PeekLine()
        {
            string line = Underlying.ReadLine();
            if (line == null)
                return null;
            BufferedLines.Enqueue(line);
            return line;
        }
        public string ReadLine()
        {
            if (BufferedLines.Count > 0)
                return BufferedLines.Dequeue();
            return Underlying.ReadLine();
        }
    }
| 归档时间: | 
 | 
| 查看次数: | 21566 次 | 
| 最近记录: |