我已经看过几个关于这个问题的帖子。我已经实现了所有的建议,比如在streamwriter和连接对象上使用flush(),close()方法,使用GC.Collect()来强制清理,使用{}来自动执行
我正在从DB进行简单的操作并写入文本文件..这是我的代码
public void WriteToFile(string ProductName)
{
//Already Got Data from DB and stored in "ProductName"
//saving in File
if (!File.Exists(path11))
{
File.Create(path11);
StreamWriter tw = new StreamWriter(path11);
tw.WriteLine(ProductName+"@"+DateTime.Now.ToString());
tw.Flush();
tw.Close();
}
else if (File.Exists(path11))
{
StreamWriter tw = new StreamWriter(path11, true);
tw.WriteLine(ProductName + "@" + DateTime.Now.ToString());
tw.Flush();
tw.Close();
}
GC.Collect();
}
我得到的另一个建议是锁定对象..但是我无法实现它.. 任何建议都会有帮助
答案 0 :(得分:5)
File.Create
创建文件并返回一个打开的流。你真的不需要所有那些逻辑。只需使用new StreamWriter(path11, true)
创建文件(如果文件不存在),如果文件不存在则附加到文件中。 using
也很有帮助:
public void WriteToFile(string ProductName)
{
//Get Data from DB and stored in "ProductName"
using (var tw = new StreamWriter(path11, true))
{
tw.WriteLine(ProductName+"@"+DateTime.Now.ToString());
}
}
答案 1 :(得分:2)
FileCreate
返回一个您应该用来实例化StreamWriter
的流:
var file = File.Create(path11);
StreamWriter tw = new StreamWriter(file);
您应该使用using
块来确保在完成编写后关闭流和文件。