2012-12-28 25 views
6

Piszę plik tekstowy i za każdym razem, gdy piszę, chcę, aby wyczyścić plik tekstowy.Usuń cały poprzedni tekst przed zapisaniem

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 
{ 
} 

Jak to zrobić? Chcę usunąć całą poprzednią treść z DefaultProfile.txt.

Muszę znać metodę lub sposób (może to być tylko nazwa), aby usunąć całą treść z pliku tekstowego.

+0

W prosty sposób można uzyskać dane, usunąć plik i utworzyć nowy. Czy istnieje lepszy sposób? –

+0

myślę, że to jest prostsze [Rozwiązanie] [1] [1]: http://stackoverflow.com/a/24933010/2374691 – Ritwik

Odpowiedz

11

Mogłeś po prostu napisać pusty ciąg do istniejącego pliku:

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

Albo zmienić drugi parametr w konstruktorze StreamWriter do false do zastąpić zawartość pliku zamiast dołączanie do pliku.

+1

Dzięki, pracował dla mnie. –

0

System.IO.File.Delete, lub jeden z System.IO.FileStream konstruktora przeciążeń określających FileMode.Create

9

Można spojrzeć na Przybliżanie metody

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

technika najbardziej proste i skuteczne jest stosowanie logiczną parametr konstruktora StreamWriter użytkownika. Gdy jest ustawione na false, zastępuje plik bieżącą operacją. Na przykład musiałem zapisać wynik operacji matematycznej w pliku tekstowym. Za każdym razem chciałem TYLKO aktualną odpowiedź w pliku tekstowym. Tak więc, w pierwszej operacji StreamWriter ustawiłem wartość logiczną na false, a kolejne wywołania miały wartość bool val ustawioną na true. W rezultacie dla każdej nowej operacji poprzednia odpowiedź zostaje zastąpiona i wyświetlana jest tylko nowa odpowiedź.

 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

Można użyć FileMode.Truncate. Kod będzie wyglądał tak:

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