Я хочу добавить строки в мой файл. Я использую StreamWriter:
StreamWriter file2 = new StreamWriter(@"c:\file.txt");
file2.WriteLine(someString);
file2.Close();
Вывод моего файла должен быть на несколько строк ниже друг друга, но у меня есть только одна строка, которая перезаписывается при каждом запуске этого кода.
Есть ли способ позволить StreamWriter добавить к существующему файлу?
c#
streamwriter
Точка
источник
источник
StreamWriter
.using
Блок лучше синтаксис для этого.using (var stream = new StreamWriter(..)) { stream.WriteLine(..); }
Ответы:
Используйте это вместо:
С этой перегрузкой конструктора StreamWriter вы выбираете, добавлять ли файл или перезаписывать его.
C # 4 и выше предлагает следующий синтаксис, который некоторые считают более читабельным:
источник
источник
Я предполагаю, что вы выполняете весь приведенный выше код каждый раз, когда что-то записываете в файл. Каждый раз, когда поток для файла открывается, его указатель поиска располагается в начале, поэтому все записи в конечном итоге перезаписывают то, что было раньше.
Вы можете решить проблему двумя способами: либо с помощью удобного
или путем явного изменения положения указателя потока:
источник
Попробуй это:
источник
Заменить это:
с этим:
true
указывает, что он добавляет текст.источник
Используйте этот
StreamWriter
конструктор со вторым параметром -true
.источник
Другой вариант использует System.IO.File.AppendText
Это эквивалентно перегрузкам StreamWriter, которые дали другие.
Также File.AppendAllText может дать немного более простой интерфейс, не беспокоясь об открытии и закрытии потока. Хотя, возможно, вам придется побеспокоиться о том, чтобы поставить свои собственные переводы строк. :)
источник
На самом деле только ответ Джона (5 сентября '11 в 9:37) с BaseStream.Seek работал для моего случая. Спасибо Джон! я нуждался в добавить строки в ZIP-архиве TXT-файл.
источник
Еще один простой способ заключается в
File.AppendText
добавлении текста в кодировке UTF-8 в существующий файл или в новый файл, если указанный файл не существует, и возвращаетSystem.IO.StreamWriter
источник
Заменить эту строку:
с этим кодом:
и затем напишите свою строку в текстовый файл следующим образом:
источник