Leggi tutto il file e lo memorizzi su una list.
Quando lo scrivi di nuovo su file, conti le righe che hai copiato e al punto giusto ci scrivi le tue. Dopo di che riprendi a scrivere i dati dentro alla lista fino a che non l'hai scritta tutta.

Per esempio, se devi scrivere "non" alla posizione 3 di sto file

- Ciao
- io
- mi
- chiamo
- genivaldo

Quindi tra "io" e "mi" devi fare una cosa del genere:

Streamreader sr=new Streamreader(....);
try{
//apri file
}
catch{
//eccezione che file non esiste
}

List<string> testo=new List<string>();
while(!sr.endoffile()){
testo.Add(sr.GetLine());
}

int posizione_inserire=2; //PERCHè SI PARTE DA ZERO
if(posizione_inserire>=testo.count()){
// gestire eccezione
}

Streamwriter sw=new StreamWriter....
try{
//apertura file in scrittura...
}
catch(){
//solite menate
}
for(int i=0;i<testo.Count();i++){
if(i==posizione_inserire){
sw.WriteLine("non");
}
sw.WriteLine(testo.ElementAt(i));
}


CODICE SCRITTO QUI E NON TESTATO... CONTROLLALO