Прежде всего, я прошу прощения за заголовок, я не уверен, как сформулировать этот вопрос.
В настоящее время у меня Parallel.ForEach
перебирает каталог, заполненный файлами .txt.
То, что я делаю внутри этого, захватывает определенные данные, которые варьируются от файла к файлу.
Всякий раз, когда все необходимые данные собираются, они затем выводятся в файл.
Все верно, кроме идентификационных номеров внутри каждого текстового файла. Идентификационные номера не совпадают с соответствующим файлом. Он выводится произвольным образом. Имена и дата располагаются в порядке, но не фактические идентификационные номера внутри текстовых файлов. Я не уверен, как поступить с этим, так как код выглядит хорошо для меня. Единственное, о чем я могу думать, это то, что AppendAllText
постоянно открывает и закрывает окончательный текстовый файл, что, в свою очередь, не позволяет выводить точные данные. Ниже мой код.
Parallel.ForEach(directoryInfo.GetFiles("*.txt"), (file, state) =>
{
using StreamReader sr = File.OpenText(file.FullName);
string user = sr.ReadToEnd();
if (user.Contains("ID:"))
{
ID = IDRegex.Match(user).Value.Replace("ID:", string.Empty);
}
else if (user.Contains("ID="))
{
ID = IDDRegex.Match(user).Value.Replace("ID=", string.Empty);
}
this.Dispatcher.Invoke(() =>
{
//count++;
//Current.Content = file.Name;
if (user.Contains(users.Text))
{
File.AppendAllText(Idir + "IReport-" + IUser.Text + ".txt",
String.Format("{0,-16} {1,27}", file.Name.Replace(".txt", ""), (file.LastWriteTime.Date).ToString()).Replace("12:00:00 AM", "") +
String.Format("{0, 18}", ID) + Environment.NewLine + Environment.NewLine);
}
});
});