C # просмотр текстовых файлов и запись в файл

#c# #forms #file-io

#c# #формы #file-io

Вопрос:

У меня есть очень большой текстовый файл (более 35 000 строк информации), и я хотел бы извлечь из него определенные строки и поместить их в другой текстовый файл.

Текстовый файл выглядит следующим образом:

     Feature info
    Feature name: 123456
    Version: 1

    Tokens total: 35
    Tokens remaining: 10
  

И я хотел бы извлечь имя функции и общее количество токенов. Я имел в виду форму с двумя кнопками: 1 для просмотра файла, а другая для выполнения всего чтения и записи в файл, конечно, в том же построчном формате.

У кого-нибудь есть какие-либо подсказки о том, как это сделать? Я искал, и я действительно не нашел конкретных вещей, также довольно новых для чтения / записи файлов…

Редактировать

Хорошо, вот что у меня есть до сих пор, и это работает:

 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();
  

И это делается с помощью одной кнопки. Однако я хочу иметь возможность искать нужный мне файл, а затем использовать другую кнопку, чтобы выполнить весь процесс записи

Комментарии:

1. I have searched and I haven't really found specific things Я сомневаюсь, что

2. Изучите File.ReadLines() и string.StartsWith()

3. Поиск классов StreamReader и StreamWriter в c #. Остальное — это чтение построчно и некоторые строковые операции для извлечения того, что вам нужно.

4. Используйте File.Readlines() , а затем выполните поиск нужного слова следующим string.StartsWith() образом, затем добавьте строку в массив и поместите массив в текстовую область.

5. Спасибо, ребята! Это помогло

Ответ №1:

Ответ на РЕДАКТИРОВАНИЕ:

Вы можете сохранить прочитанные данные в свойстве или частном поле в классе form. Предпочтительно использовать String или 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();
}
  

Пожалуйста, добавьте использование для системы.Ввод-вывод и окружите ваш StreamReader и StreamWriter с помощью блока using, чтобы ваш код был более читабельным, и вы не забудете освободить используемые ресурсы.

Комментарии:

1. Спасибо за ваш ответ. Удалось сделать из этого что-то хорошее!

Ответ №2:

Вы можете использовать StreamReader и StreamWriter для чтения / записи файлов

Для извлечения определенной части текста вы можете использовать регулярное выражение.Совпадения, он вернет совпадение, затем вы можете получить определенную группу в 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);