关于StreamWriter的使用

computerre 2010-11-08 04:04:25
我用了StreamWriter.flush()
但是总是报无法写入已关闭的 TextWriter。

public class WriteLog
{
//public static string LogPath = string.Empty;
static StreamWriter LogStreamWriter = new StreamWriter(@"F:\log\log.txt", true);
public static void WriteLogFun(string LogContent)
{

LogStreamWriter.WriteLine("{0},{1}", DateTime.Now.ToString(),LogContent);
LogStreamWriter.Flush();
LogStreamWriter.Close();


}

请教高手
...全文
1050 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
aamaomao 2010-11-08
  • 打赏
  • 举报
回复
要注意,如果是多线程的还存在同步问题
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xxiju203 的回复:]
把StreamWriter定义在你函数里面即可.因为关闭之后会Disponse掉的
[/Quote]
除非你写到using(){...}中,否则关闭之后只会等待GC来处理,而并不保证立刻Dispose。于是关闭之后如果立刻有程序操作文件,仍然会经常出现文件被占用而无法打开的问题。
  • 打赏
  • 举报
回复
不是占用,而是滥用。并不在乎那点存储(算算浪费了几毛钱?),而是static很容易与随意操作它的不负责任代码纠缠一起出现。
xxiju203 2010-11-08
  • 打赏
  • 举报
回复
把StreamWriter定义在你函数里面即可.因为关闭之后会Disponse掉的
楼上说的把Close那句去掉也有问题的,第二次执行的时候会有异常抛出,提示你文件正在被使用.
loveSoftandhxy 2010-11-08
  • 打赏
  • 举报
回复
private static StreamWriter LogStreamWriter = null;
public static void WriteLogFun(string LogContent)
{
LogStreamWriter = new StreamWriter(@"F:\log.txt", true);
LogStreamWriter.WriteLine("{0},{1}", DateTime.Now.ToString(), LogContent);
LogStreamWriter.Flush();
LogStreamWriter.Close();
}


需要的时候打开,关闭。

不要一上来就占用静态资源
wangyue4 2010-11-08
  • 打赏
  • 举报
回复
或者把 LogStreamWriter.Close();这句去掉
wangyue4 2010-11-08
  • 打赏
  • 举报
回复
你的LogStreamWriter 是全局变量,这样重复调用WriteLogFun()就会有问题

 public static void WriteLogFun(string LogContent)
{
StreamWriter LogStreamWriter = new StreamWriter(@"F:\log.txt", true);
LogStreamWriter.WriteLine("{0},{1}", DateTime.Now.ToString(), LogContent);
LogStreamWriter.Flush();
LogStreamWriter.Close();


}

把它放到里边就行了
wuhuabucai 2010-11-08
  • 打赏
  • 举报
回复
WriteLogFun 这个函数被你调用多次的吧?
明缘 2010-11-08
  • 打赏
  • 举报
回复
用 FileStream 和 StreamWriter 结合使用应该没有问题。
Demo 网上有。

110,536

社区成员

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

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

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