Gravardados sequencialmente em arquivo txt por um JFrame

6 respostas
BLV_DOOM_JAVA

Ola pessoal,
sou novo no GUJ, então não sei se ja existe um tópico com esse assunto.

Pessoal, eu estou tentando gravar informações em um arquivo txt sequencialmente, basicamente a idéia é quando eu clicar no botão ele pega o conteudo dos JTextField armazena no txt, ai depois eu coloco outra informação clico no botão e as informações vão para a linha seguinte.
Então, eu ja tentei de diversas formas e classes diferentes, porém é que ele não grava na linha de baixo, ele grava na mesma linha ou sobrescreve o arquivo gerado.

Alguém pode me indicar um método de fazer este tipo de armazenamento?

Ficoagradecido.

6 Respostas

M

Seria bom se você informasse quais classes voce tentou usar…
Bem… Como não sei quais você já tentou, tente usar a PrintWriter.

PrintWriter pw = new PrintWriter("teste.txt");
pw.println("O metodo println faz exatamente a mesma coisa que System.out.println(). Escreve e pula a linha");
pw.flush();
pw.close();

Era isso?

BLV_DOOM_JAVA

Cara, obrigado!
esqueci de citar a classe.

eu estou tentando com esses recursos:

//Método para gravar

public void gravaArquivo(String nome,String senha){ try{ File arquivo; arquivo = new File("Lista de Login.txt"); FileOutputStream gravador = new FileOutputStream(arquivo,true); String name=nome+" "+senha+"\n\n"; gravador.write(name.getBytes()); gravador.close(); } catch(Exception e){ JOptionPane.showMessageDialog(null, "Não foi possível salvar o arquivo", "Erro", JOptionPane.ERROR_MESSAGE); // mostra mensagem de erro } }

//Método do actionPerformed

public void actionPerformed(ActionEvent e){ { String nome=txtNome.getText(); String senha=txtSenha.getText(); gravaArquivo(nome,senha); } }

a idéia seria cada vez que eu clico, ele rava e pula a linha para o proximo registro fique embaixo do anterior no txt.

M
PrintWriter pw = new PrintWriter("Lista de Login.txt"); // PrintWriter pode ser criado direto com o nome do arquivo literal mesmo
pw.println(nome + " " + senha);
pw.flush();
pw.close();

Acho que só isso basta! Vê se da certo!

BLV_DOOM_JAVA

Murl,

Funciona, porém ele sobescreve o texto.

Será que eu tenho que bolar um loop para o programa contar as linhas escritas no txt gerado?

pois no código que eu postei grava tudo numa mesma linha.

Ta muito dificil fazer isso!

M

Cara, seguinte, eu fiz isso a muito tempo quando eu tava tentando imitar o bloco de notas do Windows. Provavelmente deve existir uma classe que faça isso mais facilmente, enquanto isso, se quiser usar o meu:

BufferedReader br = new BufferedReader(new FileReader("Lista de Login.txt")); // cria o objeto que vai ler o arquivo
        String c;
        ArrayList<String> linhas = new ArrayList<String>(); // cria uma coleção para adicionar as linhas que  estão no arquivo
        while ((c = br.readLine()) != null) {
            linhas.add(c); //  cada linha do arquivo e adiciona a coleção
        }
        br.close();
        PrintWriter pw = new PrintWriter("Lista de Login.txt");
        for (String a: linhas) {
            pw.println(a); // percorre a coleção e ja vai escrevendo o conteudo no arquivo
        }
        pw.println(nome + " " + senha); // adiciona o novo "nome" e "senha" que são passados como parametro do seu método
        pw.flush();
        pw.close();

Isso deve dar certo… Só nao sei se é usual =).
Espero que ajude!

BLV_DOOM_JAVA

Obrigado pela ajuda cara! Consegui resolver o problema!
Valeu!

Criado 28 de junho de 2009
Ultima resposta 29 de jun. de 2009
Respostas 6
Participantes 2