2016-08-04 4 views
1

У меня есть следующий код, написанный как я хочу сохранить строку в конце текстового файла в виде списка.Сохранение до конца существующего текстового файла C#

Однако в тот момент, когда я пытаюсь что-то сохранить, он удаляет весь предыдущий текст в файле и просто добавляет последний. Ниже мой код:

using (var writer = new StreamWriter(@"C:\Users\Falconex\Documents\Visual Studio 2015\Projects\Test2\Test2\bin\Debug\Product.txt")) 
{ 
    writer.WriteLine(productTextBox.Text + Environment.NewLine); 
    writer.Close(); 
} 

Спасибо заранее, Люси

+0

https://msdn.microsoft.com /en-us/library/6ka1wd3w%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396 – slawekwin

ответ

5

Вы сейчас просто перезаписывать содержимое файла, каждый раз, когда вы пишете.

StreamWriter имеет второй параметр, который вы должны задать, чтобы верно для добавления текста: https://msdn.microsoft.com/library/36b035cb(v=vs.110).aspx

using (var writer = new StreamWriter(@"C:\Path\To\file.txt", true)) 
{ 
    writer.WriteLine(productTextBox.Text + Environment.NewLine); 
    writer.Close(); 
} 
1

Вы можете сделать это проще. Используйте некоторые статические методы в классе «Файл» (AppendAllLines, AppendText, AppendAllText). Например:

File.AppendAllLines("filename.txt", new string[] { "my appended text" }); 
0

Это потому, что вы переписываете предыдущий контент. Вам нужно сначала прочитать содержимое, чтобы сохранить его, а затем написать новый текст. Что-то вроде этого:

//Reading text 
string text = System.IO.File.ReadAllText(@"C:\Users\Falconex\Documents\Visual Studio 2015\Projects\Test2\Test2\bin\Debug\Product.txt"); 
using (var writer = new StreamWriter(@"C:\Users\Falconex\Documents\Visual Studio 2015\Projects\Test2\Test2\bin\Debug\Product.txt")) 
{ 
    writer.WriteLine(text + productTextBox.Text + Environment.NewLine); 
    writer.Close(); 
} 
0
using (var writer = new StreamWriter(@"C:\Users\Falconex\Documents\Visual   Studio 2015\Projects\Test2\Test2\bin\Debug\Product.txt",true)) 
      { 
       writer.WriteLine(productTextBox.Text + Environment.NewLine); 
       writer.Close(); 
      } 
0

попробовать это:

using (var writer = new StreamWriter(filepath, true)) 
    { 
     { 
     writer.Write(productTextBox.Text + Environment.NewLine); 
     } 
    writer.Close(); 
    } 

что true параметр указывает StreamWriter Дописывать текст, если файл существует

Смежные вопросы