用C#覆盖文本文件

时间:2014-08-03 15:43:20

标签: c#

更新 很抱歉没有清楚地解释清楚。我想要的输出是用新文本更新保存文件而不是继续在行尾写入。不确定我是否正确解释。如果我错了,请纠正我。谢谢。


试图覆盖整个.txt文件。但它只会继续添加更多行到文件而不是覆盖它。尝试将内部文件置于内部,但仍然无法正常工作。 如果有人能教我如何覆盖文本文件,那将是很棒的。

提前致谢。

   private void bttSave_Click(object sender, EventArgs e)
        {
            outFile = new FileStream(FILENAME, FileMode.Append, FileAccess.Write); //Creating a file stream object to open file for reading
            writer = new StreamWriter(outFile); //creating a stream writer with the outfile file stream object
            for(int i = 0; i < DataGridResult.RowCount; i++)
            {
                writer.WriteLine(adminNoTxt.Text + DELIM + DataGridResult.Rows[i].Cells[0].Value.ToString() + DELIM + DataGridResult.Rows[i].Cells[1].Value.ToString() + DELIM + DataGridResult.Rows[i].Cells[2].Value.ToString());
                //using stream writer to write a record
            }

            writer.Close();
            outFile.Close();

        }

2 个答案:

答案 0 :(得分:6)

使用FileMode.Create代替FileMode.Append

  • Create创建一个新文件(如果它不存在)或覆盖它(如果存在)。
  • Append会在最后添加。

请参阅http://msdn.microsoft.com/library/system.io.filemode%28v=vs.110%29.aspx

答案 1 :(得分:1)

只需使用FileMode.Create代替FileMode.Append

他们都检查文件是否不存在,创建它,然后从第一个文件写入文件。

但区别在于“追加”不会删除旧数据并在文件末尾添加新数据,但“创建”会删除所有旧数据首先是数据,然后在文件的第一个中写入新数据。