12

我正在写一个文本文件,每次我写我都想清除文本文件。

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中删除所有以前的内容。

我实际上必须知道从文本文件中删除所有内容的方法或方式(可能只是一个名称)。

4

6 回答 6

22

您可以将一个空字符串写入现有文件:

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

或者更改StreamWriter构造函数中的第二个参数false替换文件内容而不是附加到文件中。

于 2012-12-28T15:07:55.663 回答
13

你可以看看Truncate方法

FileInfo fi = new FileInfo(@"Default\DefaultProfile.txt");
using(TextWriter txtWriter = new StreamWriter(fi.Open(FileMode.Truncate)))
{
    txtWriter.Write("Write your line or content here");
}
于 2012-12-28T15:11:45.837 回答
6

最直接有效的技术是使用 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(".");
        }       
于 2014-05-04T02:52:42.240 回答
2

您可以使用FileMode.Truncate. 代码看起来像

FileStream fs = new 
FileStream(filePath, FileMode.Truncate, FileAccess.Write )
{  
  fs.Close();
}
于 2017-04-13T04:22:14.927 回答
1

System.IO.File.Delete,或System.IO.FileStream指定的构造函数重载之一FileMode.Create

于 2012-12-28T15:08:01.140 回答
1

只需将的构造函数中的第二个参数从 更改true为。falseStreamWriter

using (StreamWriter sw = new StreamWriter(("Default//DefaultProfile.txt").ToString(), **false**))

请参阅StreamWriter 构造函数

于 2018-09-10T09:19:09.577 回答