在此代碼中,字符串x
給出OutOfMemoryException
。有沒有其他的方法可以解析所有的文件而不需要OutofMemoryException
?我嘗試過的代碼似乎沒有錯。在C#中處理「OutofMemoryException」?
有人建議讓程序通過文件讀取文件,而不是讀取整個文件並將其放入一個字符串x
。
IEnumerable<string> textLines = Directory.GetFiles(@"C:\Users\karansha\Desktop\Unique_Express\", "*.*")
.Select(filePath => File.ReadLines(filePath))
.SelectMany(line => line);
string x = string.Join(",", textLines);
List<string> users = new List<string>();
Regex regex = new Regex(@"User:\s*(?<username>.*?)\s");
MatchCollection matches = regex.Matches(x);
foreach (Match match in matches)
{
var user = match.Groups["username"].Value;
if (!users.Contains(user)) users.Add(user);
}
int numberOfUsers = users.Count(name => name.Length < 15);
Console.WriteLine("Unique_Users_Express=" + numberOfUsers);
我們在這裏說幾個文件?文件也是巨大的? – 2013-03-12 13:22:15
是的文件大小是巨大的。大約500 MB。 – 2013-03-12 13:23:36
無論文件的大小,我也會建議處理另一個文件之後... – 2013-03-12 13:23:40