C#文本文件浏览和文件写入

C#文本文件浏览和文件写入,c#,forms,file-io,C#,Forms,File Io,我有一个非常大的文本文件(大约35000多行信息),我想从中提取某些行并将它们放在另一个文本文件中 文本文件如下所示: Feature info Feature name: 123456 Version: 1 Tokens total: 35 Tokens remaining: 10 我想提取特征名称和标记总数。我想到的是一个有两个按钮的表单:一个用于浏览文件,另一个用于对文件部分执行整个读写操作,当然是以相同的逐行格式 有人知道怎么做吗?我已经搜索过

我有一个非常大的文本文件(大约35000多行信息),我想从中提取某些行并将它们放在另一个文本文件中

文本文件如下所示:

    Feature info
    Feature name: 123456
    Version: 1

    Tokens total: 35
    Tokens remaining: 10
我想提取特征名称和标记总数。我想到的是一个有两个按钮的表单:一个用于浏览文件,另一个用于对文件部分执行整个读写操作,当然是以相同的逐行格式

有人知道怎么做吗?我已经搜索过了,但还没有真正找到具体的东西,对于文件读/写来说也是非常新的

编辑

好的,这是我到目前为止所做的工作:

private void button1_Click(object sender, EventArgs e)
    {

        int counter = 0;
        string line;
        string s1 = "Feature name";
        string s2 = "Tokens total";


        // Read the file and display it line by line.
        System.IO.StreamReader file = new System.IO.StreamReader("d:\\license.txt");
        using (System.IO.StreamWriter file2 = new System.IO.StreamWriter(@"D:\test.txt")) 
         while ((line = file.ReadLine()) != null)
          {
              if (line.Contains(s1) || line.Contains(s2))
              {
                  file2.WriteLine(line);
                  counter++;
              }
          }

        file.Close();
这是通过一个按钮完成的。不过,我想要的是能够搜索我想要的文件,然后使用另一个按钮来完成您可以使用的所有写入过程,以及读/写文件

要提取文本的特定部分,您可以使用,它将返回,然后您可以在
Match.Groups

// Search name
Match mu = Regex.Match(line, @"Feature name: (\d+)");

// Get name
if (mu.Groups.Count == 1) Console.Writeline(mu.Groups[0].Value);

回答编辑问题

您可以将读取的数据存储在form类的property或private字段中。最好使用字符串或StringBuilder。单击第二个按钮时,检查是否有存储的数据,并将其写入输出文件

private StringBuilder data = new StringBuilder();

private void button2_Click(object sender, EventArgs e)
{
    if(data.Length > 0)
    {
        using(System.IO.StreamWriter file2 = new System.IO.StreamWriter(@"D:\test.txt"))
        {
            file2.Write(data.ToString());
        }
    }
}

private void button1_Click(object sender, EventArgs e)
{
    // Clear the previous store data
    data.Clear();

    // ...

    System.IO.StreamReader file = new System.IO.StreamReader("d:\\license.txt"); 
    while ((line = file.ReadLine()) != null)
    {
        if (line.Contains(s1) || line.Contains(s2))
        {
            sb.AppendLine(line);
            counter++;
        }
    }

    file.Close();
}

请添加using for System.IO,并用using块包围您的StreamReader和StreamWriter,这样您的代码将更具可读性,并且您不会忘记释放使用过的资源。

我已经搜索过,但还没有真正找到具体的内容
我怀疑在c#中查找和搜索StreamReader和StreamWriter类。剩下的部分是逐行读取和一些字符串操作来提取所需内容。使用
文件.Readlines()
然后像下面这样搜索所需的单词
字符串.StartsWith()
,然后将字符串添加到数组并将数组放入文本区域。谢谢大家!谢谢你的回答。设法从中获得了一些好处!