none
Ler .txt de uma vez só. RRS feed

  • Pergunta

  • Boa Noite Pessoal.

     

    Não lembro aonde vi ou se estou imaginando coisas (a necessidade é tanta que faz você acreditar nas coisas impossíveis), por tanto pergunto a vocês:

    "Um metodo para ler um arquivo .txt, .csv ou etc... que jogue ele completamente na memória e para depois trabalhar com os dados?" O metódo readline da classe stream já conheço. Acredito que isso seja possível, pois ainda não estou tão louco assim, e acho que faz parte da classe stream também.

    Ex.: Um arquivo .txt com 200. Em vez de criar o laço e ler linha por linha, pegar o arquivo inteiro, abrir e jogar na memória. Depois então localizar, ir e voltar a procura de dados.

     

    Obrigado mais uma vez.

    att,

    Reginaldo Villela

     

     

    terça-feira, 6 de abril de 2010 02:19

Respostas

  • Olá Reginaldo,

    Veja se isso te ajuda, esse trecho pega todas as linhas do arquivo, sem loops, etc...

                List<string> oListLinhasArquivos = new List<string>();
                oListLinhasArquivos.AddRange(File.ReadAllLines(@"d:\Teste.txt"));

    Para pesquisar poderás utilizar predicate em cima das Listas, dessa maneira:

                string pLinhaPesquisa = oListLinhasArquivos.Find(new Predicate<string>(delegate(string pValor)
                    {
                        return pValor.Contains("5");
                    }));

    Caso não for dessa maneira que estás procurando, aprendeu uma nova. :D.

     


    Abraço, Espero ter ajudado. Caso sim, marque-a como tal.
    • Sugerido como Resposta Iter Lubnon terça-feira, 6 de abril de 2010 04:46
    • Marcado como Resposta Reginaldo Villela quarta-feira, 7 de abril de 2010 00:14
    terça-feira, 6 de abril de 2010 04:46
  • Boa Noite Pessoal.

     

    Não lembro aonde vi ou se estou imaginando coisas (a necessidade é tanta que faz você acreditar nas coisas impossíveis), por tanto pergunto a vocês:

    "Um metodo para ler um arquivo .txt, .csv ou etc... que jogue ele completamente na memória e para depois trabalhar com os dados?" O metódo readline da classe stream já conheço. Acredito que isso seja possível, pois ainda não estou tão louco assim, e acho que faz parte da classe stream também.

    Ex.: Um arquivo .txt com 200. Em vez de criar o laço e ler linha por linha, pegar o arquivo inteiro, abrir e jogar na memória. Depois então localizar, ir e voltar a procura de dados.

     

    Obrigado mais uma vez.

    att,

    Reginaldo Villela

     

     

    veja est exemplo aqui: http://www.codeproject.com/KB/database/Cs_CSV_import_export.aspx

    http://www.dotnetspider.com/forum/237609-How-import-csv-txt-file-by-using-c.aspx


    Just Be Humble Malange!
    terça-feira, 6 de abril de 2010 11:18
    Moderador

Todas as Respostas

  • Olá Reginaldo,

    Veja se isso te ajuda, esse trecho pega todas as linhas do arquivo, sem loops, etc...

                List<string> oListLinhasArquivos = new List<string>();
                oListLinhasArquivos.AddRange(File.ReadAllLines(@"d:\Teste.txt"));

    Para pesquisar poderás utilizar predicate em cima das Listas, dessa maneira:

                string pLinhaPesquisa = oListLinhasArquivos.Find(new Predicate<string>(delegate(string pValor)
                    {
                        return pValor.Contains("5");
                    }));

    Caso não for dessa maneira que estás procurando, aprendeu uma nova. :D.

     


    Abraço, Espero ter ajudado. Caso sim, marque-a como tal.
    • Sugerido como Resposta Iter Lubnon terça-feira, 6 de abril de 2010 04:46
    • Marcado como Resposta Reginaldo Villela quarta-feira, 7 de abril de 2010 00:14
    terça-feira, 6 de abril de 2010 04:46
  • Boa Noite Pessoal.

     

    Não lembro aonde vi ou se estou imaginando coisas (a necessidade é tanta que faz você acreditar nas coisas impossíveis), por tanto pergunto a vocês:

    "Um metodo para ler um arquivo .txt, .csv ou etc... que jogue ele completamente na memória e para depois trabalhar com os dados?" O metódo readline da classe stream já conheço. Acredito que isso seja possível, pois ainda não estou tão louco assim, e acho que faz parte da classe stream também.

    Ex.: Um arquivo .txt com 200. Em vez de criar o laço e ler linha por linha, pegar o arquivo inteiro, abrir e jogar na memória. Depois então localizar, ir e voltar a procura de dados.

     

    Obrigado mais uma vez.

    att,

    Reginaldo Villela

     

     

    veja est exemplo aqui: http://www.codeproject.com/KB/database/Cs_CSV_import_export.aspx

    http://www.dotnetspider.com/forum/237609-How-import-csv-txt-file-by-using-c.aspx


    Just Be Humble Malange!
    terça-feira, 6 de abril de 2010 11:18
    Moderador
  • Boa Noite Iter Vinícius,

    Não me lembro como era o método, mas desta forma é muito melhor. Não tinha pensado em usar uma coleção, pois depois de preenchida posso descartar o arquivo e trabalhar com ela o tempo que for necessário. Como eu disse, com o laço seria necessario repeti-lo várias vezes para comparar todos os dados, e meu arquivo não tem apenas 200 linhas como eu disse, tem aproximadamente 100.000 linhas e 20 col.

    Obrigado e até mais.

    Reginaldo Villela

    quarta-feira, 7 de abril de 2010 00:21
  • Boa Noite Malange.

    O método de inserir diretamente no SQL vai me servir muito bem para outra parte da aplicação que uso arquivos .csv!

    Obrigado pela Dica

    Reginaldo

    quarta-feira, 7 de abril de 2010 00:27