C # - Arquivos textos - Inserindo texto em uma linha específica
Você sabe como abrir um arquivo texto, ler o seu conteúdo e exibi-lo em um formulário Windows ?
É uma tarefa simples de ser feita usando as classes da linguagem C#.
E se você precisar inserir um texto em uma determinada linha de um arquivo texto existente ?
Essa também é simples de fazer e eu vou mostrar uma das maneiras de implementar a solução para resolver esta questão.
Para isso vou usar o Visual C# 2010 Express Edition.
Abra o Visual C# 2010 Express Edition e crie um novo projeto do tipo Windows Forms com o nome InserindoTexto;
A seguir inclua 4 Textos, 4 Label e 2 Buttons no formulário form1.cs conforme o leiaute abaixo:
Controles usados no
formulário: TextBox:
Button:
Não vou detalhar os controles Labels somente a label que exibe o nome do arquivo: lblArquivo Os namespaces usados no formulário do projeto são: using
System; |
Vamos definir uma variável do tipo StreamReader com o nome rdr no início do formulário:
StreamReader rdr = null;
No evento Click do botão - Inserir Texto no Arquivo - digite o código abaixo:
private void btnInserirTexto_Click(object sender, EventArgs e) { //realiza a validação dos dados entrados pelo usuário if (txtNomeArquivoTexto.Text == string.Empty) { MessageBox.Show("Informe o nome do arquivo texto."); return; } if (txtTextoAInserir.Text == string.Empty) { MessageBox.Show("Informe o texto a inserir."); return; } if (txtNumeroLinha.Text == string.Empty) { MessageBox.Show("Informe o número da linha onde inserir o texto."); return; } string nomeArquivo = txtNomeArquivoTexto.Text; string textoInserir = txtTextoAInserir.Text; int numeroLinha = Convert.ToInt32(txtNumeroLinha.Text); //cria o arraylist ArrayList linhas = new ArrayList(); //verifica se o arquivo existe if (File.Exists(nomeArquivo)) { try { //lê o arquivo texto rdr = new StreamReader(nomeArquivo); } catch(Exception ex) { MessageBox.Show("Erro ao acessar o arquivo : " + ex.Message); return; } } else { MessageBox.Show("O arquivo : " + nomeArquivo + " não existe..."); return; } string linha; //percorre o arquivo texto linha a linha e inclui cada linha no arraylist while ((linha = rdr.ReadLine()) != null) { try { //inclui a linha o ArrayList linhas.Add(linha); } catch (Exception ex) { MessageBox.Show("Erro ao acessar o arquivo : " + ex.Message); return; } } rdr.Close(); //inclui o texto no array a partir da linha definida if (linhas.Count > numeroLinha) linhas.Insert(numeroLinha, textoInserir); else linhas.Add(textoInserir); //Abre o arquivo texto para escrita StreamWriter wrtr = new StreamWriter(nomeArquivo); //escreve o arraylist ja com a linha inserida no arquivo texto foreach (string strNovaLinha in linhas) { wrtr.WriteLine(strNovaLinha); } wrtr.Close(); //exibe o conteúdo atual do arquivo texto txtArquivo.Text = AbreArquivoTexto(nomeArquivo); } |
No código acima após efetuar a validação criamos um ArrayList e lemos o arquivo usando um StreamReader e preenchemos o controle ArrayList com o seu conteúdo;
A seguir fechamos o StreamReader e usando as propriedades Count, Insert e Add do ArrayList realizamos a inclusão de um texto no arraylist e depois usando um StreamWrite escrevemos o arraylist no arquivo texto existente.
Ao término chamamos a rotina AbreArquivoTexto() para exibir o conteúdo do arquivo texto alterado no formulário.
O código da rotina AbreArquivoTexto() é dada a seguir:
public string AbreArquivoTexto(string caminho) { //aumenta o tamanho do form this.Height = 620; this.Width = 450; //exibe o nome do arquivo lido lblArquivo.Text = caminho; // Cria StreamReader StreamReader sr; // Verifica se o Arquivo Existe if (!File.Exists(caminho)) { throw (new FileNotFoundException("Não foi Possível Localizar o Arquivo Especificado")); } // Inicializa o StreamReader e retorna o conteudo using (sr = new StreamReader(caminho)) { return sr.ReadToEnd(); } } |
Executando o projeto teremos o formulário form1.cs apresentando para que o usuário informe o nome do arquivo texto, o texto a inserir e linha a partir da qual o texto será inserido;
Após entrar com essas informações e clicar no botão - Inserir Texto no Arquivo - teremos o seguinte resultado:
O arquivo texto é lido e apresentando no formulário já com o seu conteúdo alterado.
Pegue o projeto completo aqui: InserindoTexto.zip
Rom 3:11
Não há quem entenda; não há quem busque a Deus.Referências: