Проблема с StreamWriter. Вывод переменной в файл

434
05 февраля 2017, 10:42

Вот кусок кода -

Console.WriteLine(s);
a = Console.ReadLine();
FileInfo f = new FileInfo(@"C:\kardlnal\i.txt");
StreamWriter w = f.CreateText();
w.WriteLine(a);
w.Close();

Все вроде работает, но есть одно но. Это действие заключено в цикле, после каждого запуска переменная s меняет значения и так же, после каждого запуска, в файле C:\kardlnal\i.txt стирается то, что было написано раньше. Мне же надо, чтобы эта команда дописывала, а не переписывала все заново.
Возможно так сделать или нет?

Answer 1

Во первых, создавать FileInfo нет смысла.

StreamWriter вторым параметром принимает append, который можно задать в true и тогда значения будут добавляться в файл.

using (StreamWriter w = new StreamWriter(@"C:\kardlnal\i.txt", true))
{
    w.WriteLine(a);
}

В третьих, если у Вас в цикле всё записывается, то зачем Вам на каждой итерации заново создавать StreamWriter? Почему бы его не создать до цикла и закрыть после?

Answer 2

Конечно возможно.
Например так:

using (var stream = new FileStream(@"C:\kardlnal\i.txt", FileMode.Append))
using (StreamWriter w = new StreamWriter(stream))
{
    w.WriteLine(a);
}

Здесь вторым аргументом конструктора FileStream передается режим открытия файла - FileMode.Append.

READ ALSO
Js в проекте c# [требует правки]

Js в проекте c# [требует правки]

Как взаимодействовать с скриптом на сайте через программу (вызывать определенные функции, click)Подскажите как это реализовать

430
Запись массива в сессию

Запись массива в сессию

Как записать в сессию массив, следующего плана

562
Две версии PHP на одном сервере

Две версии PHP на одном сервере

Можно ли на одном сервере установить две версии PHP (43

519