Search code examples
c#readline

c# read a text file. How to avoid reading it again


I'm new to programming and I have a problem with calling a method.
I read a text file in the first method and saved each line in a list. And the return type of the method was List so that I could bring any specific line of the text file in other method. But the problem is that I have to read the text file over and over whenever I call the first method. I have to call the method more than 100 times and the length of the text file is over 1000 lines.

public static List<double> readLine(int line) 
{
    //read a text file and save in readList
    return readList[line];
}

public static double useList()
{
    readLine(1);
    readLine(2);
    readLine(3);
    readLine(4);

   return 0;
}

Solution

  • Like I said in my comment, just read the entire file once and save it into a List<string> using File.ReadAllLines() (Cast the output to a list). Once you have that, then you can just use the List<string> directly without having to go back to read the file each time. See below.

    public class Program
    {
        private static List<string> lines;
        public static void Main()
        {
            // At this point lines will have the entire file. Each line in a different index in the list
            lines = File.ReadAllLines("..path to file").ToList();
    
            useList(); // Use it however
        }
    
        // Just use the List which has the same data as the file
        public static string readFromList(int num)
        {
            return lines[num];
        } 
    
        public static void useList()
        {
            string line1 = readFromList(1); // Could even be string line1 = lines[SomeNum];
            string line2 = readFromList(2);
        }
    }