Я предполагаю, что вы выполняете все вышеуказанного кода каждый раз, когда что-то записываете в файл.Каждый раз, когда поток для файла открывается, его указатель поиска располагается в начале, поэтому все записи заканчиваются перезаписью того, что было раньше.
Вы можете решить проблему двумя способами: либо с помощью удобного * 1005.*
file2 = new StreamWriter("c:/file.txt", true);
или путем явного перемещения указателя потока самостоятельно:
file2 = new StreamWriter("c:/file.txt");
file2.BaseStream.Seek(0, SeekOrigin.End);