您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> .NET >> C#对文件的写入一定要用flush方法才行么?

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

来源:网络整理     时间:2016/6/21 7:56:11     关键词:

关于网友提出的“ C#对文件的写入一定要用flush方法才行么?”问题疑问,本网通过在网上对“ C#对文件的写入一定要用flush方法才行么?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 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()才能写进去,这是为什么呀?


解决方案1:

加不加sWrete.Flush()没有关系。不用Flush相当于一次性写入所有,用了Flush,表示不等后面的,先把当前的写入。
其实根本原因是你文件流没有关闭。sWrite.Close();

解决方案2:

清理当前编写器的所有缓冲区,并使所有缓冲数据写入基础流。 http://msdn.microsoft.com/zh-cn/library/system.io.streamwriter.flush(v=vs.110).aspx

解决方案3:

MSDN: 当使用 StreamWriter 或 BinaryWriter 类时,不要刷新 Stream 基对象。 而应使用该类的 Flush 或 Close 方法,此方法确保首先将该数据刷新至基础流,然后再将其写入文件。


以上介绍了“ C#对文件的写入一定要用flush方法才行么?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/1874701.html

相关图片

相关文章