2012-12-28 95 views
6

我正在寫一個文本文件,並且每次我寫入時我都想要清除的文本文件。在寫入之前刪除以前的所有文本

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

我該怎麼做?我想從刪除所有以前的內容DefaultProfile.txt

我實際上必須知道從文本文件中刪除所有內容的方法或方法(只是一個名稱)。

+0

一個簡單的方法可能是獲取數據,刪除文件並創建一個新的。有沒有更好的方法? –

+0

我認爲這是一個簡單的[解決方案] [1] [1]:http://stackoverflow.com/a/24933010/2374691 – Ritwik

回答

11

你可以只寫一個空字符串到現有文件:

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

或更改第二個參數的StreamWriter構造函數false取代文件的內容,而不是附加到文件中。

+1

感謝,這爲我工作。 –

0

System.IO.File.Delete,或System.IO.FileStream構造函數重載指定FileMode.Create

9

你可以看一下在截斷方法

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

最直接,最有效的方法之一是使用StreamWriter的構造函數的布爾參數。當它設置爲false時,它會用當前操作覆蓋文件。例如,我必須將數學運算的輸出保存到文本文件中。每次我只想要文本文件中的當前答案。因此,在第一個StreamWriter操作中,我將布爾值設置爲false,隨後的調用將bool val設置爲true。結果是,對於每個新的操作,先前的答案被覆蓋並且只顯示新的答案。

 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

您可以使用FileMode.Truncate。代碼將看起來像

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