【发布时间】:2014-03-10 16:20:43
【问题描述】:
我正在为复杂格式开发文件阅读器。实际上有数百个不同的条目。在我现在这样做的方式中,我需要使用两个Streamreaders,因为我之前需要提取一些信息。这些文件足够大,无法一次读取。
我想要的是通知用户哪些行没有被读取。我的结构是这样的:
Streamreader file1 = new Streamreader(path);
while((line=file1.Readline()) != null)
{
if(line.StartsWith("HELLO")
{
//...
}
//... more conditions
}
Streamreader file2 = new Streamreader(path);
while((line=file2.Readline()) != null)
{
if(line.StartsWith("GOOD MORNING")
{
//...
}
//...more conditions
}
所以如果我的阅读器最后是完美的,所有的行都会被阅读。由于事情可能很奇怪,一些条目可能还没有实现,我想抓住那些线。如您所见,这里的问题是有 两个 StreamReaders。
我的选择是:
- 将所有未读取的行存储在一个数组中,然后将其用于第二次读取,读取后逐行减去。不好,因为我将在那里存储数千行。
- 将第二个 StreamReader 中的所有条件添加到第一个(全部添加),这样我就可以知道第二次要读取哪些行。比以前好,但我需要在几个地方修改我的代码以使其正常运行。我的意思是,当我想实现读取一个新条目(第二个
StreamReader)时,我也需要修改第一个StreamReader。
有什么建议或更好的方法吗?
【问题讨论】:
-
在每次通读时跟踪行号并在不满足任何条件时将行号添加到集合中有什么问题?
标签: c# streamreader