I have an application which needs to loop through all the lines in text files, over gigabytes in size. Some of these files have 10's or 100's of millions of lines.
An example of my current (and synchronous) reading, looks something like...
using (FileStream stream = new FileStream(args[0], FileMode.Open, FileAccess.Read, FileShare.Read)) {
using (StreamReader streamReader = new StreamReader(stream)) {
string line;
while (!string.IsNullOrEmpty(line = streamReader.ReadLine())) {
//do stuff with the line string...
}
}
}
I have read some stuff about the .Net Asynchronous IO streaming methods, and I am after some help with 2 specific questions regarding this issue.
First, will I get a performance boost by asyncronously reading these files, if I need the entireity of each line, which are ussually short, but of varying lengths (there is no relationship between each of the lines in the file)?
Second, How do I convert the code above, into an async read, so I can process each line-by-line, as I do now?