2012-12-28 14 views
6

Ich schreibe eine Textdatei und jedes Mal, wenn ich schreibe ich möchte löschen die Textdatei.Entfernen Sie alle vorherigen Text vor dem Schreiben

try 
{ 
    string fileName = "Profile//" + comboboxSelectProfile.SelectedItem.ToString() + ".txt"; 
    using (StreamWriter sw = new StreamWriter(("Default//DefaultProfile.txt").ToString(), true)) 
    { 
     sw.WriteLine(fileName); 
     MessageBox.Show("Default is set!"); 
    } 
    DefaultFileName = "Default//DefaultProfile.txt"; 
} 
catch 
{ 
} 

Wie mache ich das? Ich möchte alle vorherigen Inhalte von DefaultProfile.txt entfernen.

Ich muss tatsächlich die Methode oder Weise kennen (nur ein Name sein könnte), um den gesamten Inhalt aus der Textdatei zu entfernen.

File.WriteAllText(@"Default\DefaultProfile.txt", String.Empty); 

oder den zweiten Parameter ändern im StreamWriter Konstruktor false-ersetzen den Inhalt der Datei statt anhängt in die Datei:

+0

aussehen Eine einfache Möglichkeit könnte sein, die Daten zu erhalten, löschen Sie die Datei und erstellen Sie eine neue. Gibt es einen besseren Weg? –

+0

Ich denke, dies ist eine einfache [Lösung] [1] [1]: http://stackoverflow.com/a/24933010/2374691 – Ritwik

Antwort

11

Sie könnten nur eine leere Zeichenfolge an die vorhandene Datei schreiben.

+1

Danke, es für mich gearbeitet. –

0

System.IO.File.Delete, oder einer der System.IO.FileStream Konstruktorüberladungen Angabe FileMode.Create

9

Sie am Kürzen Methode aussehen kann

FileInfo fi = new FileInfo(@"Default\DefaultProfile.txt"); 
using(TextWriter txtWriter = new StreamWriter(fi.Open(FileMode.Truncate))) 
{ 
    txtWriter.Write("Write your line or content here"); 
} 
5

Die einfachste und effiziente Technik ist das Streamwriter-Konstruktor boolean Parameter zu verwenden. Wenn es auf false gesetzt ist, überschreibt es die Datei mit der aktuellen Operation. Zum Beispiel musste ich die Ausgabe einer mathematischen Operation in eine Textdatei speichern. Jedes Mal wollte ich NUR die aktuelle Antwort in der Textdatei. Bei der ersten StreamWriter-Operation habe ich den booleschen Wert auf "false" gesetzt, und bei den nachfolgenden Aufrufen wurde der Wert "bool" auf "true" gesetzt. Das Ergebnis ist, dass für jede neue Operation die vorherige Antwort überschrieben wird und nur die neue Antwort angezeigt wird.

 int div = num1/denominator; 
     int mod = num1 % denominator; 
     Console.Write(div); 
     using (StreamWriter writer = new StreamWriter(FILE_NAME, false)) 
     { 
      writer.Write(div); 
     } 
     Console.Write("."); 
     using (StreamWriter writer = new StreamWriter(FILE_NAME, true)) 
     { 
      writer.Write("."); 
     }  
0

Sie können FileMode.Truncate verwenden. Code wird wie

FileStream fs = new 
FileStream(filePath, FileMode.Truncate, FileAccess.Write) 
{ 
    fs.Close(); 
} 
Verwandte Themen