Как получить доступ и записать каждое слово в массиве строк, прочитанных из файла на новый файл в C#?

Мой тестерфайл содержит:

processes
deleting 
agreed

И этот код в C#

PorterStemmer testing = new PorterStemmer();
string temp,stemmed;
string[] lines = System.IO.File.ReadAllLines(@"C:\\Users\\PJM\\Documents\\project\\testerfile.txt");
System.Console.WriteLine("Contents of testerfile.txt = ");
for (int i = 0; i <2; i++)
   {
      temp = lines[i];
      stemmed = testing.StemWord(temp);
System.IO.File.WriteAllText(@"C:\\Users\\PJM\\Documents\\project\\testerfile3.txt", stemmed);
       Console.WriteLine("\t" + stemmed);
   }

После запуска кода testerfile3 содержит только "agre" . Поэтому моя проблема здесь в том, что я хочу, чтобы каждое слово в массиве строк обрабатывалось отдельно, т.е. у меня проблема с доступом к массиву строк. Есть ли способ получить доступ к каждому индексу в массиве строк?

1 ответ

Решение

Из документации WriteAllText:

Если целевой файл уже существует, он перезаписывается.

поэтому каждая итерация в цикле for перезаписывает файл, и у вас остается только текст последней итерации.

ты можешь использовать System.IO.File.AppendAllText вместо

также вы можете использовать свойство Length массива для циклического перебора всех слов for (int i = 0; i < lines.Length; i++)

В качестве альтернативы, вместо цикла for вы можете использовать LINQ Select, чтобы проецировать неосновную линию на ствольную и использовать AppendAllLines написать результаты:

System.IO.File.AppendAllLines(@"C:\\Users\\PJM\\Documents\\project\\testerfile3.txt", lines.Select(l => testing.StemWord(l)));
Другие вопросы по тегам