File.ReadAllLines or Stream Reader

.net, c#, stream, winforms

Solution

If you want to process each line of a text file without loading the entire file into memory, the best approach is like this:

foreach (var line in File.ReadLines("Filename"))
{
    // ...process line.
}

This avoids loading the entire file, and uses an existing .Net function to do so.

However, if for some reason you need to store all the strings in an array, you're best off just using `File.ReadAllLines()` - but if you are only using `foreach` to access the data in the array, then use `File.ReadLines()`.

Problem

We can read file either by using `StreamReader` or by using `File.ReadAllLines`. For example I want to load each line into a `List` or `string[]` for further manipulation on each line. ``` string[] lines = File.ReadAllLines(@"C:\\file.txt"); foreach(string line in lines) { //DoSomething(line); } ``` or ``` using (StreamReader reader = new StreamReader("file.txt")) { string line; while ((line = reader.ReadLine()) != null) { //DoSomething(line); or //save line into List<string> } } //if list is created loop through list here ``` Application come across different size of text file. Which could grow from few `KBs` to `MBs` occasionally. My question is that which one is preferred way and why one should be preferred over other?

Original source

Related problems