如何从文本文件中读取非常长的字符串,然后处理它(分割为单词)?
我尝试使用StreamReader.ReadLine()
方法,但是我得到了一个OutOfMemory
异常。显然,我的行非常长。
这是我用于读取文件的代码:
using (var streamReader = File.OpenText(_filePath))
{
int lineNumber = 1;
string currentString = String.Empty;
while ((currentString = streamReader.ReadLine()) != null)
{
ProcessString(currentString, lineNumber);
Console.WriteLine("Line {0}", lineNumber);
lineNumber++;
}
}
将行分成单词的代码:
var wordPattern = @"\w+";
var matchCollection = Regex.Matches(text, wordPattern);
var words = (from Match word in matchCollection
select word.Value.ToLowerInvariant()).ToList();
ToList()
从GetLowercasedWords
中移除。我看不出它除了占用内存、减慢速度和增加内存错误的风险之外还有什么作用。 - Jon Hanna