You can read the file, store each row in one List<>
, fetch the line you need to change, and write to the file again.
Remembering that the line 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";
}
}
put in the . Netfiddle: https://dotnetfiddle.net/ld7vTQ
line from where ? integer ? to q this message ?
– Rovann Linhalis
i have a CSV file that contains several lines separated by ; (point and comma), I want to call this method and tell it to add a text ( the Rro message parameter) on the line ( number passed by parameter also)
– Jhonatas Silva
example: I want line 5 to add the message "not inserted"
– Jhonatas Silva
Then it would be edit, or add a field in line i of the given CSV file
– Rovann Linhalis
exactly Rovann, would you be so kind as to help me in this?
– Jhonatas Silva