有没有办法做到这一点:
this.logFile = File.Open("what_r_u_doing.log", FileMode.OpenOrCreate, FileAccess.ReadWrite);
using(var sr = new StreamReader(this.logFile))
{
    // Read the data in
}
// ... later on in the class ...
this.logFile = File.Open("what_r_u_doing.log", FileMode.OpenOrCreate, FileAccess.ReadWrite);
using(var sw = new StreamWriter(this.logFile))
{
    // Write additional data out...
}
无需打开文件两次?
我似乎无法使StreamReader不处理我的流.我也不想让它超出范围.然后垃圾收集器最终将调用Dispose,杀死流.
Sim*_*han 70
.NET 4.5将最终通过StreamReader和StreamWriter上的新构造函数修复此问题,该构造函数采用leaveOpen参数:
StreamReader(Stream stream, Encoding encoding, bool detectEncodingFromByteOrderMarks, int bufferSize, bool leaveOpen)
StreamWriter(Stream stream, System.Text.Encoding encoding, int bufferSize, bool leaveOpen)
Meh*_*ari 47
我也不想让它超出范围.然后垃圾收集器最终将调用Dispose,杀死流.
垃圾收集器将调用Finalize方法(析构函数),而不是Dispose方法.终结器将调用Dispose(false)哪个不会处理底层流.你应该是离开OK StreamReader,如果你需要直接使用底层流超出范围.只需确保在适当的时候手动处理基础流.
| 归档时间: | 
 | 
| 查看次数: | 22869 次 | 
| 最近记录: |