c# - write to file read operations -
i have read text file has millions of records. while reading file have implement "tracker" write last read linenumber log file. don't want log file open , write operation affect application performance. can suggest me how implement it? p.s. using yield read big file, , have multiple files that. want stop reading operation if file has invalid record...while read operation going on want somehow want let end users know far has read , number of line - file read in progress.
using (streamreader reader = new streamreader(_filenameandpath)) { while (reader.endofstream == false) { string data = reader.readline(); _filelinenumber = _filelinenumber + 1; //this line number should go tracker file logger.trace(_filelinenumber ) //............ } }
logger class :
public static class logger { ..... public static void trace(string message) { filestream filestream = new filestream(logfilepath, filemode.append); streamwriter streamwriter = new streamwriter(filestream); streamwriter.writeline(message); } }
you store file stream class-level private field, open before enter loop, close after exit loop.
or better yet, implement idisposable
on logger
, , wrap loop inside using
statement, , cleanup take place automatically:
public class logger : idisposable { private filestream filestream; private streamwriter streamwriter; public void trace(string message) { streamwriter.writeline(message); } public logger(string logfilepath) { filestream = new filestream(logfilepath, filemode.append); streamwriter = new streamwriter(filestream); } public void dispose() { streamwriter.dispose(); filestream.dispose(); } }
here how use within code have:
var logfilepath = ""; // replace log path. using (var logger = new logger(logfilepath)) { while (reader.endofstream == false) { string data = reader.readline(); _filelinenumber= _filelinenumber + 1; logger.trace(_filelinenumber); } }
Comments
Post a Comment