none
Como criar arquivo txt com nome numerico sequencial?? RRS feed

  • Pergunta

  • Pessoal,

    Estou necessitando criar arquivos txt sequencias com nome de 000001 à 10000000000.

    Consegui criar o arquivo com o seguinte codigo passado por um amigo:

    string filename = "C:\\scanner\\000001.txt";
    string texto = "Teste de criação de arquivo texto";

                if (!System.IO.File.Exists(filename))
                {
                    try
                    {
                        System.IO.File.Create(filename).Close();
                    }
                    catch (Exception ex)
                    {
                        throw new Exception("Erro ao criar o boletim na caixa postal de envio!", ex);
                    }
                }

    Mas não tenho idéia de loop para fazer ele gerar os arquivos em sequencia...

    Alguem poderia me ajudar?

    Desde já agradeço...


    Luiz Carlos

    quinta-feira, 15 de março de 2012 20:42

Respostas

  • Amigo,

    Voce tem certeza que o numero de arquivo a serem criados é de 10000000000? É um numero muito grande de arquivos e dependendo que voce for incluir em cada arquivo o processo ser muito demorado, prejudicando assim ate o servidor onde ira rodar a aplicação.

    Caso seja este numero mesmo o correto segue abaixo um exemplo de como fazer esta funcionalidade.

                for (Int64 index = 1; index <= 10000000000; index++)
                {
                    string fileName = string.Format(@"C:\\scanner\{0}.txt", index.ToString().PadLeft(10,'0'));
    
                    if (!System.IO.File.Exists(fileName))
                    {
                        try
                        {
                            using (System.IO.StreamWriter sw = new System.IO.StreamWriter(fileName))
                            {
                                sw.Write("Teste de criação de arquivo texto");
                            }
                        }
                        catch (Exception ex)
                        {
                            throw new Exception("Erro ao criar o boletim na caixa postal de envio!", ex);
                        }
                    }
                }


    se a resposta foi útil, classifique :)
    ate mais,

    Rodrigo Soria

    sexta-feira, 16 de março de 2012 02:46

Todas as Respostas

  • Amigo,

    Voce tem certeza que o numero de arquivo a serem criados é de 10000000000? É um numero muito grande de arquivos e dependendo que voce for incluir em cada arquivo o processo ser muito demorado, prejudicando assim ate o servidor onde ira rodar a aplicação.

    Caso seja este numero mesmo o correto segue abaixo um exemplo de como fazer esta funcionalidade.

                for (Int64 index = 1; index <= 10000000000; index++)
                {
                    string fileName = string.Format(@"C:\\scanner\{0}.txt", index.ToString().PadLeft(10,'0'));
    
                    if (!System.IO.File.Exists(fileName))
                    {
                        try
                        {
                            using (System.IO.StreamWriter sw = new System.IO.StreamWriter(fileName))
                            {
                                sw.Write("Teste de criação de arquivo texto");
                            }
                        }
                        catch (Exception ex)
                        {
                            throw new Exception("Erro ao criar o boletim na caixa postal de envio!", ex);
                        }
                    }
                }


    se a resposta foi útil, classifique :)
    ate mais,

    Rodrigo Soria

    sexta-feira, 16 de março de 2012 02:46
  • RSCS,

    A criação dos arquivos se dá a cada cadastro feito, "cadastrou a entrada da pessoa ai gera o arquivo de numero 000001, o proximo cadastro gera o 000002 e assim vai!", não seria criar esse range de uma só vez...

    eu coloquei esse range para que o sistema não chegue tão rapido ao seu limete de numeros. 

    Da maneira que vc colocou vai gerar o range inteiro correto??? ai sim vai travar tudo aqui!

    Preciso gerar a cada evento do botão entrar um pacote txt desses com dados dentro...

    Veja como eu tinha feito e não deu certo:

    //CRIA UM ARQUIVO TEXTO        

       string filename = "Teste.txt";   
       string texto = "Teste de criação de arquivo";
       
          if (!System.IO.File.Exists(filename))
                    {
                        try
                        {
                            System.IO.File.Create(filename).Close();
                        }
                        catch (Exception ex)
                        {
                            throw new Exception("Erro ao criar o boletim na caixa postal de envio!", ex);
                        }
                    }              

     

     

    //GRAVA UMA LINHA NO ARQUIVO

    try
                    {
                        System.IO.TextWriter arq = new System.IO.StreamWriter(filename);
                        arq.WriteLine(texto);
                        arq.Flush();
                        arq.Close();
                       
                    }
                    catch (IOException ex)
                    {
                        throw new Exception("Arquivo: " + filename + " não localizado!", ex);
                    }

    Desde já, obrigado pela ajuda!!!


    Luiz Carlos

    sexta-feira, 16 de março de 2012 11:27
  • Olá LC-Locker,

    Não sei se você possui noções de banco de dados ou orientação objetos. Mas, de qualquer forma irei dar duas dicas para você.

    Primeiramente, eu aconselho criar um método apenas para criar o arquivo para ter um código mais organizado.

    Partindo desse pressuposto, você pode passar o objeto que você salvou no banco de dados na assinatura do método. Desta forma, você recuperada o id do objeto e passa no nome do arquivo, assim como segue abaixo:

    public void Cadastrar(){
       Pessoa p = new Pessoa(){
         nome = "LC-Locker",
         endereco = "Endereço do LC-Locker",
         telefone = "2222-2222"
       };
    
       db.Salvar(p);
    
       EscreverArquivo(p);
    }
    
    private void EscreverArquivo(Pessoa p){
        string fileName = string.Format(@"C:\\scanner\{0}.txt", p.id);
        StreamWriter sw = new StreamWriter(fileName);
        sw.Write();
        sw.Close();
    }
    

    Acabei me ocupando aqui e esqueci a segunda dica. Desculpa! =p

    Se essa não ajudar tento lembrar!

    sexta-feira, 16 de março de 2012 13:21
  • Pessoal,

    Consegui assim...

    Obrigado pela ajuda...

    for (Int64 index = 1; index != 0; index++)
                {
                    string fileName = string.Format(@"C:\\scanner\{0}.txt", index.ToString().PadLeft(10, '0'));

                    if (!System.IO.File.Exists(fileName))
                    {
                        try
                        {
                            using (System.IO.StreamWriter sw = new System.IO.StreamWriter(fileName))
                            {
                                sw.Write("Teste de criação de arquivo texto");
                            }

                            return;
                        }
                        catch (Exception ex)
                        {
                            throw new Exception("Erro ao criar o arquivo, avise o Suporte!", ex);
                        }
                    }
                }

     


    Luiz Carlos

    sexta-feira, 16 de março de 2012 17:51