Hae*_*nal 4 c# streamwriter streamreader
我有一个StreamWriter对象写入日志文件,它初始化如下:
StreamWriter streamWriter = File.AppendText(GetLogFilePath());
streamWriter.AutoFlush = true;
Run Code Online (Sandbox Code Playgroud)
稍后在我的代码中,我需要关闭日志文件,然后读取部分已注销的内容.我有以下代码:
streamWriter.Close();
streamWriter = null;
StreamReader logFileStream = File.OpenText(GetLogFilePath());
Run Code Online (Sandbox Code Playgroud)
抛出异常: 进程无法访问该文件,因为它正由另一个进程使用.
据推测,问题是当我关闭StreamWriter时,日志文件未正确关闭.
有没有更好的方法来关闭StreamWriter以确保它已打开的文件正确关闭?
更新:我已经解决了我的问题.它是由一个无关的问题(一个单独的应用程序正在访问我试图访问的文件)引起的.我接受Dmitry Martovoi的回答,因为我认为这对将来有类似问题的其他人最有用; 但重要的一点是,解决方案确实需要在每次写入日志时打开日志文件,这可能会导致不必要的开销.
我总是将这些代码包装在一个using语句中
using (StreamWriter writer = File.AppendText(path))
{
writer.WriteLine("This");
writer.WriteLine("is Extra");
writer.WriteLine("Text");
}
Run Code Online (Sandbox Code Playgroud)
但对于StreamWriter Close完全相同的方法Dispose.
| 归档时间: |
|
| 查看次数: |
13484 次 |
| 最近记录: |