StreamWriter все строки в файл
C# У меня есть консольное приложение, которое читает и записывает список получения / установки сведений о персоне. Он работает правильно, пока я не попытаюсь записать его в текстовый файл. Может кто-нибудь сказать мне, почему это записывает в мой текстовый файл последнюю строку подробностей "Персона", а не весь список?
loadData();
Console.WriteLine("All People");
//1st query - just select all people
var queryAllPeople = from person in people select person;
foreach (Person p in queryAllPeople)
{
using (StreamWriter writer = new StreamWriter("people.txt"))
{
writer.WriteLine(p);
}
Console.WriteLine(p);
}
Console.ReadLine();
4 ответа
Поместите foreach внутри оператора using. Вы перезаписываете файл на каждой итерации цикла
Вы пишете новый файл с тем же именем для каждой итерации. Вы хотите создать StreamWriter
вне цикла вместо этого:
using (StreamWriter writer = new StreamWriter("people.txt"))
{
foreach (Person p in queryAllPeople)
{
writer.WriteLine(p);
Console.WriteLine(p);
}
}
Вы заново создаете файл каждый раз. Пытаться:
using (StreamWriter writer = new StreamWriter("people.txt"))
{
foreach (Person p in queryAllPeople)
{
writer.WriteLine(p);
Console.WriteLine(p);
}
}
Используйте перегрузку для StreamWriter, которая принимает добавление в качестве параметра, чтобы вы добавляли значение в файл каждый раз.
foreach (Person p in queryAllPeople)
{
using (StreamWriter writer = new StreamWriter("people.txt", true))
{
writer.WriteLine(p);
}
Console.WriteLine(p);
}
Или просто заверните foreach в using
заявление.