Как получить доступ и записать каждое слово в массиве строк, прочитанных из файла на новый файл в 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)));