c#文件流大小保持不变

时间:2013-10-16 19:24:57

标签: c# filestream streamreader seek

我有一个奇怪的问题,我实现了一个类,用于读取每秒多次附加并位于网络共享中的文件。 在第一次迭代期间,一切都很好,在读数结束时,我保留了数据库中的最后位置。 但是,在第二次传递期间,文件流不会“看到”附加文件的实际大小,但它会记住以前的大小。

我是否正在阅读网络共享? 提前感谢您的反馈。

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服务器中。

0 个答案:

没有答案