C# 释放StreamReader文件一秒
我有一个streamReader,我用它来监视文件中添加的任何新行, 事情是这样的:C# 释放StreamReader文件一秒,c#,streamreader,C#,Streamreader,我有一个streamReader,我用它来监视文件中添加的任何新行, 事情是这样的: while (true) { try { line = sr.ReadLine(); if (line == null) { break; } if (!string.IsNullOrWhiteSpace(line)) { //Do Stuff } Thread.Sleep(2); } } 现在我想偶尔发布一下
while (true)
{
try
{
line = sr.ReadLine();
if (line == null)
{
break;
}
if (!string.IsNullOrWhiteSpace(line))
{
//Do Stuff
}
Thread.Sleep(2);
}
}
现在我想偶尔发布一下文件
我可以关闭sr一两秒钟,然后重新使用它并再次使用它,但我想知道是否有合适的方法来执行此操作。用于跟踪对文件的更改,然后才打开文件以检查新行
您可以使用最后一个seek
位置开始新的seek,因此不需要重新读取整个文件
这样做的正确方法是什么
重新打开,将Seek()转到旧位置并继续工作应该是您的最佳选择。如果希望其他方能够继续访问该文件,只需指定适当的名称,例如FileShare.ReadWrite
也许看看.NET 4.0的内存映射文件,使用lastSeenLineNumber会让它变得非常慢;您不能“随机访问”查找行号,这需要重新读取完整文件;这将非常慢(对于多余的读取),并且有可能导致堆碎片,特别是在inputi中不同的行长度的情况下。我已经做到了这一点,我想问题是我忘记了在每次更新文件后关闭sr。。