我有一个文本文件如下(它有超过数千行):
Header
AGROUP1
ADATA1|0000
ADATA2|0001
ADATA3|0002
D0000|TNE
D0001|TNE
D0002|TNE
AGROUP2
ADATA1|0000
ADATA2|0001
ADATA3|0002
D0000|TNE
D0001|TNE
D0002|TNE
AGROUP3
ADATA1|0000
ADATA2|0001
ADATA3|0002
D0000|TNE
D0001|TNE
D0002|TNE
事实上,它不仅仅是数千行代码。
我需要根据群组阅读数据 例如,在方法中:
public void ReadData(string strGroup)
{
if(strGroup == "AGROUP2)
//Read from the text file starting from line "AGROUP2" to "AGROUP3"(i.e lines under AGROUP2)
}
我试过的是
public void ReadData(string strGroup)
{
bool start = false;
while ((line = reader.ReadLine()) != null)
{
if (line == strGroup && line.Length == 5)
start = true;
else if (line.Length == 5)
start = false;
if(start)
yield return line;
}
}
它工作正常,性能明智,它需要更长的时间,因为我的文本文件是一个非常非常庞大的文件....方法中的每一行都有条件。
这是一个更好的方法吗?
答案 0 :(得分:1)
如果您对文件的结构有任何了解,可能有助于您使用它:
如果没有,你注定要从上到下进行搜索,你只能使用技巧来提高速度:
答案 1 :(得分:0)
如果使用bash命令将庞大的文件剪切成较小的文件,使用AGROUP#作为第一行,该怎么办?我认为bash命令更加优化。