c# - StreamWrite WriteLine 不能作为委托
问题描述
我想创建一个简单的记录器,为此我以这种方式使用委托:
delegate void Logger(string message);
但是当我尝试使用下面的方法创建一个 Logger 时,这不会将任何内容附加到文件中。
Logger CreateFileLogger(string filePath) {
if (!File.Exists(filePath)) File.Create(filePath);
StreamWriter stream = File.AppendText(filePath);
return stream.WriteLine;
}
我不能自信地说这是 StreamWriter 类的问题还是代表的问题,无论如何我认为是第一个。
提前致谢。
解决方案
您永远不会处理流,并且永远不会刷新流(因为您没有写入足够的内容),因此不会将任何内容写入文件。你不应该像这样泄露一次性资源。
幸运的是,根本不需要处理流。只需使用File.AppendAllText
而不是创建流并自己管理它。
推荐阅读
- ruby-on-rails - 在 Rails 中用另一条记录标记一条记录
- java - Android:如何启动和停止在计时器上触发的循环?
- python - 标记数据框中包含任何列 = NAN 的行
- python - 将列出的属性范围传递给它自己的对象(Python)
- asp.net-mvc - ASP.NET MVC 从 IEnumerable 类型呈现部分视图
IEnumerable 类型的内部视图 - memory - 垃圾收集器 (GC) 根是如何存储的?
- python - 基于外部函数向现有熊猫 df 添加新列的最佳方法是什么?
- sql - SQL(网络)返回奇怪的行数
- django - Django Queryset 如何使用反向外键添加字段
- php - Laravel 规则错误使用 Laravel-build-form 包