代码之家  ›  专栏  ›  技术社区  ›  Developer

如何替换文件中已存在的数据并写入新数据

  •  0
  • Developer  · 技术社区  · 14 年前

    嗨,我写了一个代码,将datagrid视图的最后一行写入一个文件,如下所示

        private void Save_Click(object sender, EventArgs e)
        {
            if (dataGridView1.Rows.Count > 0)
            {
                List<string> lstContent = new List<string>();
    
                foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    if ((string)row.Cells[0].Value == "FileControl")
                    {
                        lstContent.Add((string)row.Cells[1].Value);
    
                        string mydata = string.Join(",", lstContent.ToArray());
    
                        using (StreamWriter sw = new StreamWriter(Append.FileName, true))
                        {
                            sw.WriteLine();
                            sw.Write(mydata);
                        }
                    }
                }
    
            }
    
    
        }
    

    1 回复  |  直到 14 年前
        1
  •  0
  •   Community CDub    5 年前

    StreamWriter显式使用append=true的文件。如果每次都要覆盖该文件,请将构造函数的第二个参数更改为false。文档是 here . 引用:

    类型:系统.布尔

    决定 是否将数据附加到 文件。如果文件存在并且append为 false,文件被覆盖。如果 数据被附加到文件中。 否则,将创建一个新文件。

      using (StreamWriter sw = new StreamWriter(Append.FileName, false))
      {
          sw.WriteLine();
          sw.Write(mydata);
      }
    

    更换 在您的文件中而不是仅仅覆盖整个文件要困难得多-这段代码无法完成它。 StreamWriter 这不是很好,你需要随机存取和能力,以取代一个数据段(线)的不同长度的数据段,这是一个昂贵的磁盘操作。

    String ,并在容器中执行所需的行替换,然后使用将文件写入磁盘 File.WriteAllLines -如果文件不是太大的话。