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

z568822254 2013-11-15 10:25:48
       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()才能写进去,这是为什么呀?
...全文
1170 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
feiniao19830822 2013-11-15
  • 打赏
  • 举报
回复
加不加sWrete.Flush()没有关系。不用Flush相当于一次性写入所有,用了Flush,表示不等后面的,先把当前的写入。 其实根本原因是你文件流没有关闭。sWrite.Close();
全栈极简 2013-11-15
  • 打赏
  • 举报
回复
清理当前编写器的所有缓冲区,并使所有缓冲数据写入基础流。 http://msdn.microsoft.com/zh-cn/library/system.io.streamwriter.flush(v=vs.110).aspx
bdmh 2013-11-15
  • 打赏
  • 举报
回复
MSDN: 当使用 StreamWriter 或 BinaryWriter 类时,不要刷新 Stream 基对象。 而应使用该类的 Flush 或 Close 方法,此方法确保首先将该数据刷新至基础流,然后再将其写入文件。

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧