Ajuda para entender uma String que não é gravada em um arquivo .txt!

1 resposta
java
T

Bom dia pessoas!

Sou novo aqui acabei de fazer meu cadastro hehe

Espero ter criado o tópico no lugar certo, caso esteja errado favor me perdoem.

Bom, estou aprendendo java agora e estou tendo problemas para identificar um erro.

Quero gravar dados em um arquivo.txt utilizando a sintaxe

writer.write("Nome:" + this.nomeCli);
writer.newLine();

Beleza o problema é que eu consigo gravar todos os dados que eu escrevo menos o primeiro!

Ah não sei se concigo explicar mas é assim eu entro o nome, o cpf, o telefone por ex, e depois mando gravar os dados em um arquivo .txt, quando eu abro o arquivo, ele não gravou o nome (que eu entrei primeiro), mas o resto grava certinho =(

Vou adicionar a parte do código para que vocês possam me ajudar!

`public void cadastrarCliente()
    {            
        Scanner in = new Scanner(System.in);
         
        System.out.println("Entre a quantidade de contas que vai cadastrar");
        String str = in.nextLine(); // criando variavel que sera convertida
        
        this.n = Integer.parseInt(str);// Convertendo String em int
        
        this.minhaConta = new Conta[n];
                    
        for (int i = 0; i < n; i++)
        {
            minhaConta[i] = new Conta();
                                   
            System.out.println("Entre o nome do cliente");
            this.nomeCli = in.nextLine();
                
            System.out.println("Entre o telefone do cliente");
            this.telefoneCli = in.nextLine();
        
            System.out.println("Entre o C.P.F do cliente");
            this.cpfCli = in.nextLine();
       try
           {
            FileWriter file = new FileWriter("Dados do Cliente.txt");
            BufferedWriter writer = new BufferedWriter(file);
            
            minhaConta[i].cadastrarConta();
            
            writer.write("Nome:" + this.nomeCli);
            writer.newLine();
            writer.write("C.P.F:" + this.cpfCli);
            writer.newLine();
            writer.write("Telefone:" + this.telefoneCli);
            writer.newLine();
            writer.write("Numero da conta:" + this.minhaConta[i].numeroConta);
            writer.newLine();
            writer.write("Numero da Agência:" + this.minhaConta[i].agenciaConta);
            writer.newLine();
            writer.write("Saldo atual da conta:" + Double.toString(this.minhaConta[i].saldoConta));
            writer.newLine();
            writer.write("Limite de crédito da conta:" + Double.toString(this.minhaConta[i].limiteConta));
            writer.newLine();
            writer.close();
           }
           catch(IOException ex)
           {
               ex.printStackTrace();
           }
            System.out.println("Cliente cadastrado!");
        }

}

Poderiam me explicar o que está errado?
Por que funciona com todas as outras informações menos com a primeira?
desde já agradeço!
Att.

Tutatis.`

1 Resposta

M

Primeiro erro é que cada iteração do seu for você reinstancia o BufferedWriter.

Você deve instância-lo antes do for e fecha-lo só depois do for.
Segundo antes de fechar. Mande ele dar um flush para descarregar o que ficou na memória.

writer.flush()
writer.close()
Criado 29 de março de 2017
Ultima resposta 31 de mar. de 2017
Respostas 1
Participantes 2