запись в файл с помощью StreamWriter - c#, работает через раз

программирование windows C# файлы streamwriter

Пишу массив в файл следующим образом:

//если файл в диалоге выбран
if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
StreamWriter sw = new StreamWriter(new FileStream(saveFileDialog1.FileName, FileMode.OpenOrCreate, FileAccess.Write));
//выводим заголовок таблицы
sw.WriteLine(flags.header);
//выводим все остальные записи (по количеству строк в DataGridView)
for (int i = 1; i < dg[1].RowCount - 1; i++) {
//элемент массива преобразуется в строку (в самом массиве хранится структура с большим количеством отдельных полей, преобразование работает правильно)
sw.WriteLine(fullBaze[i].nodeToString());
sw.Flush();
}
sw.Close();
}

Проблема вот в чем: при первом запуске сохранения все работает отлично, все записи видны, ничего не потерялось, все читается. Но если после этого тут же сохранить ещё раз в тот же файл, то по какой-то причине в конец выходного файла дописывается кусок из последней записи (то есть последняя строка дублируется, но не полностью). Почему это может происходить? Количество строк в DataGridView не меняю, сами элементы массива, естественно тоже.

Примечание:
JonMagon - нельзя ставить 0, так как в нулевой строке таблицы записаны данные, которые мне не нужны, да и роли это не играет никакой.
R34 - к сожалению не помогло(( на 3й попытке не сработало. а значит что-то не так, ведь если все верно - должно работать всегда (как я понимаю)

Примечание:
r34 - виноват, дружище, сам накосячил - работает вариант, спасибо огромное (не там менял)
Ответы:
if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
               StreamWriter sw = new StreamWriter(new FileStream(saveFileDialog1.FileName, FileMode.OpenOrCreate, FileAccess.Write));
               //выводим заголовок таблицы
               sw.WriteLine(flags.header);
               //выводим все остальные записи (по количеству строк в DataGridView)
               for (int i = 0; i < dg[1].RowCount - 1; i++) {
                   //элемент массива преобразуется в строку (в самом массиве хранится структура с большим количеством отдельных полей, преобразование работает правильно)
                   sw.WriteLine(fullBaze[i].nodeToString());
                   sw.Flush();
               }
               sw.Close();
           }


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.