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

Popular posts from this blog

jOOQ update returning clause with Oracle -

java - Warning equals/hashCode on @Data annotation lombok with inheritance -

java - BasicPathUsageException: Cannot join to attribute of basic type -