このコード文字列x
では、OutOfMemoryException
. 取得せずにすべてのファイルを解析できる他の方法はありますOutofMemoryException
か? 私が試したコードには何も問題はないようです。
誰かが、ファイル全体を読み取って 1 つの文字列に入れるのではなく、ファイルごとにプログラムを読み取るようにすることを提案しました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);