我正在尝试阅读一些文本文件,其中每一行都需要处理。目前我只是使用 StreamReader,然后单独读取每一行。
我想知道是否有更有效的方法(在 LoC 和可读性方面)使用 LINQ 来做到这一点,而不会影响操作效率。我看到的示例涉及将整个文件加载到内存中,然后对其进行处理。但是,在这种情况下,我认为这不会非常有效。在第一个示例中,文件可以达到大约 50k,而在第二个示例中,并非文件的所有行都需要读取(大小通常小于 10k)。
您可能会争辩说,如今这些小文件并不重要,但是我相信这种方法会导致代码效率低下。
第一个例子:
// Open file
using(var file = System.IO.File.OpenText(_LstFilename))
{
// Read file
while (!file.EndOfStream)
{
String line = file.ReadLine();
// Ignore empty lines
if (line.Length > 0)
{
// Create addon
T addon = new T();
addon.Load(line, _BaseDir);
// Add to collection
collection.Add(addon);
}
}
}
第二个例子:
// Open file
using (var file = System.IO.File.OpenText(datFile))
{
// Compile regexs
Regex nameRegex = new Regex("IDENTIFY (.*)");
while (!file.EndOfStream)
{
String line = file.ReadLine();
// Check name
Match m = nameRegex.Match(line);
if (m.Success)
{
_Name = m.Groups[1].Value;
// Remove me when other values are read
break;
}
}
}