如何重新启动StreamReader以从文件的开头开始读取

时间:2016-03-21 16:11:17

标签: c# streamreader

所以我必须编写一个程序,从Values.txt文件中读取值(数字)并将它们存储到整数数组中(开头我不知道文件中的值的数量,所以我不知道数组的长度) 。 首先,我遍历文件并使用计数器变量来获取要存储到数组中的值的数量。然后是问题,我不知道如何从文件的开头开始捕获值并将它们存储到数组中。 当我运行它时,我得到0 0 0 0 0。

如果不是

myReader.DiscardBufferedData(); 
myReader.BaseStream.Seek(0, SeekOrigin.Begin); 
myReader.BaseStream.Position = 0; 

我使用myReader.Close()然后使用myReader = new StreamReader("Values.txt),结果是正确的,有人可以解释为什么会发生这种情况以及如何修复此代码:)

        string lineOfText = "";
        int counter = 0;
        int[] intArray;
        StreamReader myReader = new StreamReader("Values.txt");


        while(lineOfText != null)
        {
            lineOfText = myReader.ReadLine();
            if(lineOfText != null)
            {
                counter++;
            }
        }
        intArray = new int[counter];

        myReader.DiscardBufferedData();
        myReader.BaseStream.Seek(0, SeekOrigin.Begin);
        myReader.BaseStream.Position = 0;

        counter = 0;
        while(lineOfText != null)
        {
            lineOfText = myReader.ReadLine();
            if (lineOfText != null)
            {
                intArray[counter] = int.Parse(lineOfText);
            }
            counter++;
        }
        myReader.Close();

        for (int j = 0; j < intArray.Length; j++)
        {
            Console.WriteLine(intArray[j]);
        }

1 个答案:

答案 0 :(得分:2)

这解释了如果您希望在一次通过Return StreamReader to Beginning中执行此操作来重置流。

您需要使用阵列吗?列表对于您的操作是完美的,您可以稍后将该列表推送到数组中或直接从列表中工作。代码示例如下:

List<string> ints = new List<string>();
using (StreamReader sr = new StreamReader("example.txt"))
{
    ints.Add(sr.ReadLine());
}