Filesystem notes from the real world–C#
These are just some quick tidbits about file processing in C#. Reading in files, reading in LARGE files, Reading and Processing Large Files.
Reading a file (use a StreamReader)
if (File.Exists(path)) { using (StreamReader sr = new StreamReader(path)) { while (sr.Peek() >= 0) { string line = sr.ReadLine(); } } }
Fastest way to read a file (Reading a large file) – Use BufferedStream
Using (FileStream fs = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { using (BufferedStream bs = new BufferedStream(fs)) { using (StreamReader sr = new StreamReader(bs)) { string line; while ((line = sr.ReadLine()) != null) { } } } }
For large files, split up the Processing of the file – and the Reading of the file
Use a producer – consumer pattern. The producer task read in lines of text using the BufferedStream and handed them off to a separate consumer task that did the searching.
Leave a Reply