2012-12-28 58 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(); 
} 
相关问题