2016-08-04 40 views
1

Ich habe den folgenden Code geschrieben, wie ich eine Zeichenfolge an das Ende einer Textdatei in Form einer Liste speichern möchte.Speichern am Ende der vorhandenen Textdatei C#

In dem Moment jedoch, in dem ich versuche, etwas zu speichern, löscht es den gesamten vorherigen Text in der Datei und fügt nur den neuesten Text hinzu. Im Folgenden ist mein Code:

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(); 
} 

Danke im Voraus, Lucy

+0

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

Antwort

5

Sie sind zur Zeit nur den Inhalt der Datei überschrieben wird, jedes Mal, wenn Sie schreiben.

Stream hat einen zweiten Parameter, den Sie auf true gesetzt haben Text anfügen: 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

Sie können es einfacher machen. Verwenden Sie einige statische Methoden für die Klasse "File" (AppendAllLines, AppendText, AppendAllText). Beispiel:

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

Das liegt daran, dass Sie den vorherigen Inhalt überschreiben. Sie müssen den Inhalt zuerst lesen, ihn vorübergehend speichern und dann erneut mit dem neuen Text schreiben. Etwas wie folgt aus:

//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

versuchen Sie dies:

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

dass true Parameter der StreamWriter sagt den Text anhängen, wenn die Datei