我编写了这个小程序,它从 Random.txt 中读取每 5 个字符。在 random.txt 中,我有一行文本:ABCDEFGHIJKLMNOPRST。我得到了预期的结果:
- A的位置为0
- F的位置是5
- K的位置是10
- P的位置是15
这是代码:
static void Main(string[] args)
{
StreamReader fp;
int n;
fp = new StreamReader("d:\\RANDOM.txt");
long previousBSposition = fp.BaseStream.Position;
//In this point BaseStream.Position is 0, as expected
n = 0;
while (!fp.EndOfStream)
{
//After !fp.EndOfStream were executed, BaseStream.Position is changed to 19,
//so I have to reset it to a previous position :S
fp.BaseStream.Seek(previousBSposition, SeekOrigin.Begin);
Console.WriteLine("Position of " + Convert.ToChar(fp.Read()) + " is " + fp.BaseStream.Position);
n = n + 5;
fp.DiscardBufferedData();
fp.BaseStream.Seek(n, SeekOrigin.Begin);
previousBSposition = fp.BaseStream.Position;
}
}
我的问题是,为什么后行while (!fp.EndOfStream)
BaseStream.Position
更改为 19,例如 a 的结尾BaseStream
。我预计,显然是错误的,当我打电话给checkBaseStream.Position
时会保持不变?EndOfStream
谢谢。