【问题标题】:Remove all previous text before writing在写作之前删除所有以前的文本
【发布时间】:2012-12-13 20:02:10
【问题描述】:

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

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

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

【问题讨论】:

  • 获取数据、删除文件并创建新文件是一种简单的方法。有没有更好的办法?
  • 我认为这是一个更简单的[解决方案][1] [1]:stackoverflow.com/a/24933010/2374691

标签: c#-4.0 stream streamwriter


【解决方案1】:

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

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

或者将StreamWriter构造函数中的第二个参数改为false,以替换文件内容,而不是追加到文件中。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      你可以看看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");
      }
      

      【讨论】:

        【解决方案4】:

        最直接有效的技术是使用 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(".");
                }       
        

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            【解决方案6】:

            只需将StreamWriter的构造函数中的第二个参数从true更改为false即可。

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

            StreamWriter Contructor

            【讨论】:

              猜你喜欢
              • 2016-01-07
              • 2018-12-26
              • 2017-12-21
              • 2012-08-31
              • 1970-01-01
              • 2016-08-24
              • 1970-01-01
              • 2022-11-07
              • 1970-01-01
              相关资源
              最近更新 更多