none
Leitura e alteração de arquivos TXT em C# RRS feed

  • Pergunta

  • Pessoal, sou novo aqui e tenho uma dificuldade.

    Tenho um arquivo em TXT com as seguintes linhas abaixo:

    E01     019858 02012007FOR_26448 0201200700000000006956804

    E01     019859 02012007FOR_26531 0201200700000000000079366

    Preciso ler cada uma das linhas deste arquivo e remover o espaço que tem entre 019858 e 02012007.....esta posição é a de numero 14 de cada linha.

    Eu consigo ler o arquivo txt mas não sei como chegar em cada posição de cada linha do arquivo e deletar o espaço existente nela.

    quarta-feira, 18 de julho de 2012 19:35

Respostas

  • Boas Wellington bem vindo!

    Fiz um exemplo que faz o que você deseja estou partindo do princípio que a linha que deseja alterar vai conter sempre 32 caracteres, esse foi o padrão...

    segue o code comentado:

     //instância do leitor que fara a leitura no arquivo
                //indico o caminho do arquivo a ser lido
                StreamReader leitor = new StreamReader(@"C:\Users\ze goiaba\Desktop\exemplo.txt");
                //instância da variável auxiliar
                string linha = "";
    
                //instância de um list de strings que armazenará
                //as linhas do arquivo txt
                var lista = new List<string>();
    
                //se linha diferente de null
                while (linha != null)
                {
                    //variável aux recebe a linha
                    linha = leitor.ReadLine();
                    if (linha != null)
                        //adiciono a mesma na meu list
                        lista.Add(linha);
                }
    
                //fecho o leitor
                leitor.Close();
    
    
                //percorro minha lista
                for (int i = 0; i < lista.Count; i++)
                {
                    //verifico se a quantidade de caracteres é igual a 32
                    //pois estou partindo do princípio que todas terão esse valor
                    //como você passou
                    if (lista[i].Length == 32)
                    {
                        //e aqui retiro o espaço indesejado e atualizo o 
                        //valor do indice do objetop na lista, ou seja, tiro o espaço....
                        lista[i] = lista[i].Substring(0, 14) + lista[i].Substring(15, 17);
                    }
                }
                
                //Aqui informo o caminho de um novo arquivo txt
                //que irá conter as alterações
                string novoArquivo = @"C:\Users\ze goiaba\Desktop\novoArquivo.txt";
                //verifico se já existe, se não crio um novo
                if (!System.IO.File.Exists(novoArquivo))
                    System.IO.File.Create(novoArquivo).Close();
    
                //instâncio o objeto qye fará a escrita no mesmo, ou seja, que irá
                //"passar" os dados da lista para o novo txt
                System.IO.TextWriter objetoEscrita = System.IO.File.AppendText(novoArquivo);
                //percorro a lista
                foreach (var item in lista)
                {
                    //e para cada item escrevo no txt
                    objetoEscrita.WriteLine(item);
                }
    
                //fecho a escrita.
                objetoEscrita.Close();

    Resultados:

    abraços e espero ter ajudado, só lembrando que não sei se essa é a melhor maneira de resolver essa questão e que o code é de exemplo e deve ser melhorado/otimizado!


     "Feliz aquele que transfere o saber e aprende o que ensina."(Cora Coralina)


    Pablo Batista Cardoso
    www.pablobatistacardoso.com.br
    pablobatistacardoso@hotmail.com

    quarta-feira, 18 de julho de 2012 20:53