I am trying to go line by line through text file using stream reader, and when I encounter specific text, I want to add a new line into that file. But when I do so, next line’s first part(about half) gets cut off. I want to do that only once, that’s why “skip” variable is there. Here is what I am doing:
var fileStream = new FileStream(fileName, FileMode.Open);
var writer = new StreamWriter(fileStream);
var reader = new StreamReader(fileName);
string line;
var skip = false;
using (writer) {
using (reader) {
while ((line = reader.ReadLine()) != null) {
if (line.Contains("some text") && !skip) {
writer.WriteLine("some text something else");
skip = true;
}
}
}
}
fileStream.Close();
Am I doing something wrong here?
EDIT: Aargh, I’ve just seen that you’re trying to read and write to the same file.
You shouldn’t do that – it’s replacing the existing text, rather than inserting extra data. You can’t just insert data within a file – that’s not how file systems work.
Instead, read from one file, write to another file, and then move the files around afterwards if you need to.
I’d also suggest that you have
usingstatements for the whole scope of a variable, rather than using them the way you have here. Something like this: