为什么FileStream.Seek以两种不同的方式运行?

时间:2017-06-14 13:36:28

标签: c# io filestream streamreader

以下是我正在使用的代码:

for (var i = 0; i < 100; i++)
{
    var firstLine = sr.ReadLine();
    var indexNumber = (firstLine.Length + 2) * sizeof(Char);
    var byteNumber = System.Text.ASCIIEncoding.Unicode.GetByteCount(firstLine + Environment.NewLine);

    var otherline = sr.ReadLine();
    var otherline2 = sr.ReadLine();
    var otherline3 = sr.ReadLine();

    comparisonCollection.Add(new int[] { indexNumber, byteNumber });

    fs.Seek(indexNumber, SeekOrigin.Begin);
    var indexLine = sr.ReadLine();
    sr.DiscardBufferedData();
    fs.Seek(byteNumber, SeekOrigin.Begin);
    var secondLine = sr.ReadLine();
    sr.DiscardBufferedData();
}

indexNumber和byteNumber评估为相同的数字(在本例中为440)。 第一个Seek / Readline给出了文件中第二行的预期结果,但是第二个Seek / Readline(使用相同的参数)给了我一个空字符串。我想我一定是在误解某些事情的运作方式。任何人都能解释一下吗?

0 个答案:

没有答案