You can read the file, store each line in a List<>
, fetch the line you need to change, and write to the file again.
Remembering that the row index starts at 0.
Follow the commented code:
using System;
using System.Text;
using System.Collections.Generic;
using System.IO;
...
public static string EscreveCSV(string caminho, int linha, string mensagem)
{
//Só continua se o arquivo informado existir
if (File.Exists(caminho))
{
//lista que irá armazenar cada linha do arquivo
List<string> linhas = new List<string>();
using (TextReader tr = new StreamReader(caminho, Encoding.Default))
{
string sLinha = null;
while ((sLinha = tr.ReadLine()) != null)
{
linhas.Add(sLinha); //adiciona cada linha do arquivo à lista
}
tr.Close();
}
//Só continua se o arquivo ter um número maior de linhas informadas
if (linhas.Count > linha)
{
linhas[linha] += ";" + mensagem; //adiciona a mensagem informada ao final da linha
using (TextWriter tw = new StreamWriter(caminho, false, Encoding.Default))
{
foreach (string l in linhas)
{
tw.WriteLine(l); //escreve no arquivo novamente
}
tw.Close();
}
return "Arquivo Escrito com sucesso"; //mensagem de retorno
}
else
{
return "Arquivo Não possui a linha informada";
}
}
else
{
return "Arquivo não existe";
}
}
I put it in .NetFiddle: link