StreamWriter reemplaza la línea con un nuevo texto

¿Es posible reemplazar el texto en un archivo de texto con un nuevo texto sin borrar los demás datos? Aquí está mi código de ejemplo, pero no funciona. Sé que hay un problema pero no puedo entenderlo, gracias.

private void button1_Click_1(object sender, EventArgs e)
{
    StreamReader sr = new StreamReader("test10101.txt");
    List<string> lines = new List<string>();
    while (!sr.EndOfStream)
        lines.Add(sr.ReadLine());
    output = Convert.ToInt32(textBox1.Text);
    newbal = Convert.ToInt32(lines[0]) - output;
    MessageBox.Show("Please get your cash....\n\nYour new balance is: $" + newbal);
    sr.Close();
    {
        string linetoreplace = lines[0];
        int newlinevalue = newbal;
        string contents = sr.ReadToEnd();

        StreamWriter sw = new StreamWriter("test10101.txt" + ".tmp");
        //contents = Regex.Replace(contents, linetoreplace, newlinevalue.ToString());
        contents = contents.Replace(linetoreplace, newlinevalue.ToString());
        sw.WriteLine(contents);
        sw.Close();

    }

Me pregunto si uso Regex o si reemplazo directamente la línea.

Respuestas a la pregunta(1)

Su respuesta a la pregunta