TechBubbles Microsoft Technology BLOG

.NET Framework 4 File IO Features

New methods are added to the System.IO.File class in .NET framework 4.0 for reading and writing text files.

ReadLines

In earlier version we have used File.ReadAllLines method which returns a string array of all lines in the file.

String[] lines = File.ReadAllLines(“file.txt”);

The issue is it must read all lines and allocate an array to return. For small files its ok but large files it is problematic because it block until all the lines are loaded into the memory.

The new method ReadLines in .NET framework 4 returns IEnumerable<string> instead of string[]. The new method is much more efficient because it does not load all of the lines into memory at once;

IEnumerable<string> lines = File.ReadLines(“Largefile.txt”);
Foreach(var line in lines)

The iteration actually driving the reading of the file.

The other two new methods are File.WriteAllLines that takes an IEnumerable<string>

Parameter and File.ApendAllLines that takes an IEnumerable<string> for appending lines to a file.

EnumerateFiles

In earlier version we have used GetFiles() method on directoryinfo object to get all files in the directory.

DirectoryInfo directory = new DirectoryInfo(@“LargeDirectory”);
FileInfo[] files = directory.GetFiles();

The issue is it must retrieve the complete list of files in the directory and then allocate an array to return. Here we have to wait all files to be retrieved.

The second issue is whenever we call the properties on retrieved file it takes an additional call to the file which hinders the performance.

In .NET 4, new method has added to Directory and DirectoryInfo that returns IEnumerable<T> instead of arrays to address the above issues.

DirectoryInfo directory = new DirectoryInfo(@“LargeDirectory”);

IEnumerable<FileInfo> files = directory.EnumerateFiles();

Unlike GetFiles, EnumerateFiles does not have to block until all of the files are retrieved. Now the DirectoryInfo object containing the file system during enumeration which include data about each file such as length and creation time.

Share this post :

About the author

Kalyan Bandarupalli

My name is kalyan, I am a software architect and builds the applications using Microsoft .NET technologies. Here I am trying to share what I feel and what I think with whoever comes along wandering to Internet home of mine.I hope that this page and its contents will speak for me and that is the reason I am not going to say anything specially about my self here.

1 Comment

By Kalyan Bandarupalli
TechBubbles Microsoft Technology BLOG

Follow me

Archives

Tag Cloud