我有一个奇怪的问题,我实现了一个类,用于读取每秒多次附加并位于网络共享中的文件。 在第一次迭代期间,一切都很好,在读数结束时,我保留了数据库中的最后位置。 但是,在第二次传递期间,文件流不会“看到”附加文件的实际大小,但它会记住以前的大小。
我是否正在阅读网络共享? 提前感谢您的反馈。
public long? ReadFromFile(string Path, long lastposition, int ClusterId, Startup ST)
{
QuickFix.FieldMap QFM = new QuickFix.FieldMap();
FileStream fs =new FileStream(Path, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite,1024,true);
StreamReader sr = new StreamReader(fs);
long CurrentPosition = lastposition;
sr.BaseStream.Seek(lastposition, SeekOrigin.Begin);
string line;
long i = 0;
while ((!sr.EndOfStream))
{
line = sr.ReadLine();
CurrentPosition = CurrentPosition + System.Text.ASCIIEncoding.ASCII.GetByteCount(line) + 1;
}
lastposition = CurrentPosition;
sr.Close();
sr.Dispose();
fs.Flush();
fs.Close();
fs.Dispose();
return lastposition;
}
第一遍总是成功的。 第二遍不通过循环b / c我移动指针的最后位置保持不变,即使实际文件已经长大。
更新: 该文件位于solaris服务器中。