首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#对文件的写下一定要用.flush()方法才行么

2013-11-15 
C#对文件的写入一定要用.flush()方法才行么?private void button2_Click(object sender, EventArgs e){if

C#对文件的写入一定要用.flush()方法才行么?

       private void button2_Click(object sender, EventArgs e)
        {
            if (ofdExport.ShowDialog() != DialogResult.OK)
                return;
            using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True"))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "select * from T_MyTable1";
                    using (FileStream fs1 = File.OpenWrite(ofdExport.FileName))
                    //using(FileStream fs = new FileStream("e:\\2.txt",FileMode.OpenOrCreate,FileAccess.Write))
                    {
                        StreamWriter sWrite = new StreamWriter(fs1);
                        //StreamWriter sWrite = new StreamWriter("e:\\2.txt", false, System.Text.Encoding.Default);
                        using (SqlDataReader reader = cmd.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                string name = reader.GetString(reader.GetOrdinal("Name"));
                                //MessageBox.Show(name);
                                int age = reader.GetInt32(reader.GetOrdinal("Age"));
                                //MessageBox.Show(age.ToString());
                                sWrite.WriteLine(name+"|"+age.ToString());
                                sWrite.Flush();
                            }
                            MessageBox.Show("OK");
                        }
                    }
                }
            }
        }
    }
}

红色字体那开始没有,反正一直写不进去文件,加了sWrete.Flush()才能写进去,这是为什么呀? 文件的读写


[解决办法]
MSDN:
当使用 StreamWriter 或 BinaryWriter 类时,不要刷新 Stream 基对象。 而应使用该类的 Flush 或 Close 方法,此方法确保首先将该数据刷新至基础流,然后再将其写入文件。
[解决办法]
清理当前编写器的所有缓冲区,并使所有缓冲数据写入基础流。
http://msdn.microsoft.com/zh-cn/library/system.io.streamwriter.flush(v=vs.110).aspx
[解决办法]
加不加sWrete.Flush()没有关系。不用Flush相当于一次性写入所有,用了Flush,表示不等后面的,先把当前的写入。
其实根本原因是你文件流没有关闭。sWrite.Close();

热点排行