我有一个不超过10KB的日志文件(文件大小最多可达2 MB),我想查找文件中是否至少有一组这些字符串.这些字符串将在不同的行上,如,
行动:.......
INPUT:...........
结果:..........
如果文件中存在一组以上,我至少需要知道.我已经做了大约100次测试(每次日志不同,所以我重新加载并读取日志),所以我正在寻找最快和下注的方式来做到这一点.
我在论坛中查找找到最快的方法,但我不认为我的文件对于那些问题来说太大了.
Thansk寻找.
我会逐行阅读并检查条件.一旦你看到一个组,你就可以退出.这样您就不需要将整个文件读入内存.像这样:
public bool ContainsGroup(string file)
{
using (var reader = new StreamReader(file))
{
var hasAction = false;
var hasInput = false;
var hasResult = false;
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
if (!hasAction)
{
if (line.StartsWith("ACTION:"))
hasAction = true;
}
else if (!hasInput)
{
if (line.StartsWith("INPUT:"))
hasInput = true;
}
else if (!hasResult)
{
if (line.StartsWith("RESULT:"))
hasResult = true;
}
if (hasAction && hasInput && hasResult)
return true;
}
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
此代码检查是否有以ACTION开头的行,然后是INPUT,然后是RESULT.如果这些顺序不重要,那么您可以省略if () else if ()
检查.如果该行没有以字符串替换StartsWith
为开头Contains
.