我用如下方式将一个DataTable写入一个TXT文件中,但重复点写入button,出现写入内容重复写入的问题,我需要的是写入一次就够了,但现在是追加写入,不知道是什么问题?
        private void TabWriteToTxt(DataTable tb, string fname) 
        {
            FileStream fs;
            StreamWriter sw;           
            try
            {
                fs = File.Create(fname);
                sw = new StreamWriter(fs);                string tmpstr = "";
                int cols = tb.Columns.Count;
                foreach (DataRow dr in tb.Rows)
                {
                    tmpstr = "";
                    for (int i = 0; i < cols; i++)
                    {
                        tmpstr += dr[i].ToString().Trim();
                        if ((i + 1) < cols) tmpstr += "\t";
                    }
                    sw.WriteLine(tmpstr);
                }
                sw.Close();
             
            }
            catch (Exception ex)
            {
                ShowErrorMessage("保存文件发生异常!" + ex.Message.ToString());
            }
        }

解决方案 »

  1.   

    if(File.Exists(fname))
       File.Delete(fname);fs = File.Create(fname);
                    sw = new StreamWriter(fs);                string tmpstr = ""; 
      

  2.   

    sw = new StreamWriter(fs); 改为: sw = new StreamWriter(fs,false);
      

  3.   

    StreamWriter writer = File.CreateText([Path]);
      

  4.   


    private void button1_Click(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("c1");
        dt.Columns.Add("c2");
        dt.Columns.Add("c3");
        dt.Rows.Add("1","1","1");
        dt.Rows.Add("2","2","2");
        dt.Rows.Add("3","3","3");    TabWriteToTxt(dt, "c:\\ls.txt");
    }private void TabWriteToTxt(DataTable tb, string fname)
    {
        StreamWriter sw;
        try
        {
            sw = new StreamWriter(fname, false);        string tmpstr = "";
            int cols = tb.Columns.Count;
            foreach (DataRow dr in tb.Rows)
            {
                tmpstr = "";
                for (int i = 0; i < cols; i++)
                {
                    tmpstr += dr[i].ToString().Trim();
                    if ((i + 1) < cols) tmpstr += "\t";
                }
                sw.WriteLine(tmpstr);
            }
            sw.Close();
        }
        catch (Exception ex)
        {
           // ShowErrorMessage("保存文件发生异常!" + ex.Message.ToString());
        }
    }
      

  5.   

    if(File.Exists(fname)) 
      File.Delete(fname); fs = File.Create(fname); 
                    sw = new StreamWriter(fs);                 string tmpstr = ""; 
      

  6.   


            private void TabWriteToTxt(DataTable tb, string fname)
            {
                StringBuilder sb = new StringBuilder();
                foreach (DataRow row in tb.Rows)
                {
                    for (int i = 0; i < tb.Columns.Count; i++)
                    {
                        sb.AppendFormat("{0}{1}", row[i], i == tb.Columns.Count - 1 ? Environment.NewLine : "\t");
                    }
                }
                File.WriteAllText(fname, sb.ToString());
            }