我如何读取和显示信息从多个文本文件在一个消息框c#

本文关键字:文本 文件 一个 消息 何读取 读取 信息 显示 | 更新日期: 2023-09-27 17:49:14

所以我有一个应用程序,使用复选框和单选按钮来扫描计算机的病毒,然后让每个反病毒程序创建其操作的日志。我想做的是(基于哪个复选框(有5个总数)被选中)有一个消息框弹出时,它的全部完成,并读取每个文本文件的关键字,然后读取那一行,为所有5个文本文件(如果所有5被创建可以是1,2,3,4或5个)。所以当这一切完成后,它只会弹出一个消息框,其中包含所有5个文本文件的信息,每个文件一行,如"Panda发现5个病毒",下一行"A Squared发现0个病毒"等,然后当消息框关闭时,删除文本文件。我知道如何做到这一点与1复选框和1文本文件,但我不知道如何做到这与多个复选框和多个文本文件。我的单一文件阅读器是这样工作的:

int counter = 0;
string line;
// Read the file and display it line by line.
System.IO.StreamReader file = new System.IO.StreamReader("C:''Panda.txt");
while ((line = file.ReadLine()) != null)
{
    if (line.Contains("Number of files infected"))
    {
        MessageBox.Show("Panda " + line);
    }
}
file.Dispose();
System.IO.File.Delete("C:''Panda.txt");

任何帮助都会很好,谢谢。

我如何读取和显示信息从多个文本文件在一个消息框c#

您可以使用StringWriter将当前行添加到最后在消息框中显示

        string FirstPanda = "C:''FirstPanda.txt";
        string SecondPanda = "C:''SecondPanda.txt";

        StringWriter writer = new StringWriter(); // System.IO;
        System.IO.StreamReader file;
        if (firstCheckBox.IsChecked)  
        {
            if (File.Exists(FirstPanda))
            {
                file = new System.IO.StreamReader(FirstPanda);
                while ((line = file.ReadLine()) != null)
                {
                    if (line.Contains("Number of files infected"))
                    {
                        writer.WriteLine("Panda " + line);
                    }
                }
                file.Close();
                System.IO.File.Delete(FirstPanda);
            }
        }
        if (secondCheckBox.IsChecked)
        {
            if (File.Exists(SecondPanda))
            {
                file = new StreamReader(SecondPanda);
                while ((line = file.ReadLine()) != null)
                {
                    if (line.Contains("Number of files infected"))
                    {
                        writer.WriteLine("Panda " + line);
                    }
                }
                file.Close();
                System.IO.File.Delete(SecondPanda);
            }
        }
        MessageBox.Show(writer.ToString());

希望对你有帮助

我希望我对这个问题的理解是正确的,但是如果我换个说法。您希望处理这5个文件,并在所有文件完成后显示发现的摘要?

如果是,为什么不直接这样做呢

public void ProcessFiles()
{
  var resultText = new StringBuilder();
  if (PandaCheckBox.Checked)
  {
    var result = DoPandaProcessing(); // Read file and do whatever here
    resultText.Append(result.ResultMessage);
  }
  if (Process2CheckBox.Checked)
  {
    var result = DoProcess2Processing();
    if (resultText.Length > 0)
    {
      resultText.Append(Environment.NewLine);
    }
    resultText.Append(result.ResultMessage);
  }
  MessageBox.Show(resultText.ToString());
}

只是因为我不喜欢你的处理方式(即你不喜欢任何异常),所以实现这样的方法

public ProcessResult DoPandaProcessing()
{
  using (var file = File.OpenText("filename.txt"))
  {
    while ((line = file.ReadLine()) != null)
    {
       if (line.Contains("Number of files infected"))
       {
          return new ProcessResult { Status = Status.Success, ResultMessage = "Panda " + line };
       }
    }
    return new ProcessResult { Status = Status.Failure, ResultMessage = "Panda: No result found!" }
  }
}