I need to read in all but the last x lines from a file to a streamreader in C#. What is the best way to do this?
Many Thanks!
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
If it’s a large file, is it possible to just seek to the end of the file, and examine the bytes in reverse for the ‘\n’ character? I am aware that \n and \r\n exists. I whipped up the following code and tested on a fairly trivial file. Can you try testing this on the files that you have? I know my solution looks long, but I think you’ll find that it’s faster than reading from the beginning and rewriting the whole file.
Since you are only planning on deleting the end of the file, it seems wasteful to rewrite everything, especially if it’s a large file and small N. Of course, one can make the argument that if someone wanted to eliminate all lines, then going from the beginning to the end is more efficient.