Gravar dados em arquivos

Galera! Estou desenvolvendo um sistema de Gestao de uma Livraria estou tentando gravar os dados do cliente num arquivo para depois pesquisar alterar… nao estou conseguindo fazer o meu codigo abaixo…

package teste;

import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class RegistarLivro extends JFrame {
        
 
    
    
        String []reg={"Novo Livro"};
        JLabel jlAutor=new JLabel("Autor");
        JLabel jlTitulo=new JLabel("Titulo");
        JLabel jlGenero=new JLabel("Genero");
        JLabel jlEdicao=new JLabel("Edicao");
        JLabel jlPublicacao=new JLabel("Local da Publicacao");
        JLabel jlVolume=new JLabel("Volume");
        JLabel jlAno=new JLabel("Ano da Publicacao");


    
    JTextField jtAutor =new JTextField();
    JTextField jtTitulo =new JTextField();
    JTextField jtGenero =new JTextField();
    JTextField jtPublicacao= new JTextField();
    
    JComboBox jcEdicao =new JComboBox(reg);
    JComboBox jcVolume=new JComboBox();
    JComboBox jcAno=new JComboBox ();
    
    JButton jbNovo =new JButton("Novo");
    JButton jbSave =new JButton("Salvar");
    JButton jbRemov =new JButton("Limpar");
    JButton jbEdit =new JButton("Editar");
    JButton jbConfir =new JButton("Confirmar");
    JButton jbSair =new JButton("Sair");
    
   
    
    
    
    public RegistarLivro(){
        
        JPanel pan = new JPanel();
        pan.setLayout(null);
        pan.setBackground(Color.WHITE);
        jlAutor.setBounds(40, 60, 120, 30);
        jtAutor.setBounds(160, 60, 100, 30);
        jbNovo.setBounds(310, 60, 100, 30);
        jtAutor.setEnabled(false);
        pan.add(jlAutor);pan.add(jtAutor);pan.add(jbNovo);
        
        
        jlTitulo.setBounds(40, 130, 120, 30);
        jtTitulo.setBounds(160, 130, 250, 30);
        jtTitulo.setEnabled(false);
        pan.add(jlTitulo);pan.add(jtTitulo);
        
        
        jlGenero.setBounds(40, 190, 250, 30);
        jtGenero.setBounds(160, 190, 250, 30);
        jtGenero.setEnabled(false);
        pan.add(jlGenero);pan.add(jtGenero);
        
        
        jlPublicacao.setBounds(40, 250, 250, 30);
        jtPublicacao.setBounds(160, 250, 250, 30);
        jtPublicacao.setEnabled(false);
        pan.add(jlPublicacao);pan.add(jtPublicacao);
        
        
        jlEdicao.setBounds(40, 316, 250, 30);
        jcEdicao.setBounds(100, 316, 65, 30);
        jcEdicao.setEnabled(false);
        pan.add(jcEdicao);pan.add(jlEdicao);
        
        
        jlVolume.setBounds(190, 316, 250, 30);
        jcVolume.setBounds(250, 316, 65, 30);
        jcVolume.setEnabled(false);
        pan.add(jcVolume);pan.add(jlVolume);
        
     
        jlAno.setBounds(40, 382, 250, 30);
        jcAno.setBounds(160, 382, 100, 30);
        jcAno.setEnabled(false);
        pan.add(jcAno);pan.add(jlAno);
        
        
        jbSair.setBounds(310, 490, 100, 30);
        pan.add(jbSair);
        
        
        jbSave.setBounds(40, 490, 100, 30);
        pan.add(jbSave);
         add(pan);
        setSize(480,620);
        //getContentPane().setBackground(Color.RED);
           
        setVisible(true);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setLocationRelativeTo(null);
        setResizable(false);
        setTitle("PZ Project");
        
        ((JPanel)getContentPane()).setOpaque(false); 
        ImageIcon uno=new ImageIcon(this.getClass().getResource("/imagens/projecto1.jpg")); 
        JLabel fundo= new JLabel(); 
        fundo.setIcon(uno); 
        getLayeredPane().add(fundo,JLayeredPane.FRAME_CONTENT_LAYER); 
        fundo.setBounds(0,0,uno.getIconWidth(),uno.getIconHeight());
    
        
            //ComboBox da Edicao, Volume e ano da Publicacao
            JPanel painel = new JPanel(null);
        jcEdicao=new JComboBox();
        jcEdicao.setBounds(100, 316, 65, 30);
        jcEdicao.addItem("Oitava");
        jcEdicao.addItem("Setima");
        jcEdicao.addItem("Sexta");
        jcEdicao.addItem("Quinta");
        jcEdicao.addItem("Quarta");
        jcEdicao.addItem("Terceira");
        jcEdicao.addItem("Segunda");
        jcEdicao.addItem("Primeira");
        pan.add(jcEdicao);
        
        
        
        jcVolume=new JComboBox();
        jcVolume.setBounds(250, 316, 65, 30);
        jcVolume.addItem("8");
        jcVolume.addItem("7");
        jcVolume.addItem("6");
        jcVolume.addItem("5");
        jcVolume.addItem("4");
        jcVolume.addItem("3");
        jcVolume.addItem("2");
        jcVolume.addItem("1");
        pan.add(jcVolume);
        
        
        jcAno=new JComboBox();
        jcAno.setBounds(160, 382, 100, 30);
        jcAno.addItem("2017");
        jcAno.addItem("2016");
        jcAno.addItem("2015");
        jcAno.addItem("2014");
        jcAno.addItem("2013");
        jcAno.addItem("2012");
        jcAno.addItem("2011");
        jcAno.addItem("2010");
        pan.add(jcAno);
        
        
       
        //Implementacao dos botoes Gravar/salvar e Sair
        
        jbNovo.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
               jbNovoActionPerformed(e);
            }
            private void  jbNovoActionPerformed(ActionEvent e){
                jtAutor.setEnabled(true);
                jtTitulo.setEnabled(true);
                jtGenero.setEnabled(true);
                jtPublicacao.setEnabled(true);
                jcEdicao.setEnabled(true);
                jcVolume.setEnabled(true);
                jcAno.setEnabled(true);
                    }
            });     
         
        jbNovo.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
               jbnovActionPerformed(e);
            }
            private void  jbnovActionPerformed(ActionEvent e){
                jtAutor.setEnabled(true);
                jtTitulo.setEnabled(true);
                jtGenero.setEnabled(true);
                jtPublicacao.setEnabled(true);
                jcEdicao.setEnabled(true);
                jcVolume.setEnabled(true);
                jcAno.setEnabled(true);
                    }
            });
        
        
        
        jbSair.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
               jbConfirActionPerformed(e);
            }
            private void  jbConfirActionPerformed(ActionEvent e){
                
                dispose();
                        
                    }
            });
        
       
    }

public static void main(String[]args){
       RegistarLivro l = new RegistarLivro();
       l.setVisible(true);

}
}

Cara
É mais fácil tu trabalhar com banco de dados. Sério mesmo, trablhar com arquivos pra dados é um erro imenso. Digo isso porque eu já tentei e não deu muito certo. Tudo bem se for exportar algo específico, mas cara… Se for armazenamento de dados, usa um banco de dados. Usa o MySQL mesmo que é bem simples

Pra manipular dados, tu usa File, FileReader e BufferedReader dentro de um try catch
File informando o arquivo

FileReader para o arquivo que tu vai ler

FileReader reader = new FileReader(arquivo);

E por fim, usa o BufferedReader

BufferedReader buffered = new BufferedReader(reader);

Pra ler o arquivo, tu pode usar um readLine

buffered.readLine();

Não lembro no momento se isso precisa estar em um loop. Provavelmente sim, para ler todas as linhas (caso um ENTER tenha sido pressionado para pular uma linha, ou tu queira ler outras linhas de um documento do excel por exemplo)

Ao finalizar sua ação, você precisa fechar as instâncias.

reader.close();
buffered.close();

Novamente… se estiver tentando usar um arquivo pra armazenar dados, sugiro que busque como conectar a um banco de dados.

Obrigado! Por mim ate usava Base de dados mas o professor nao quer que usemos, “Coisas da Faculdade”.

Tenetei implementar mas da um erro veja:

package teste;

import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileReader;
import java.io.PrintWriter;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class RegistarLivro extends JFrame {

    String []reg={"Novo Livro"};
    JLabel jlAutor=new JLabel("Autor");
    JLabel jlTitulo=new JLabel("Titulo");
    JLabel jlGenero=new JLabel("Genero");
    JLabel jlEdicao=new JLabel("Edicao");
    JLabel jlPublicacao=new JLabel("Local da Publicacao");
    JLabel jlVolume=new JLabel("Volume");
    JLabel jlAno=new JLabel("Ano da Publicacao");



JTextField jtAutor =new JTextField();
JTextField jtTitulo =new JTextField();
JTextField jtGenero =new JTextField();
JTextField jtPublicacao= new JTextField();
JTextField jtCodigo=new JTextField();

JComboBox jcEdicao =new JComboBox(reg);
JComboBox jcVolume=new JComboBox();
JComboBox jcAno=new JComboBox ();

JButton jbNovo =new JButton("Novo");
JButton jbSave =new JButton("Salvar");
JButton jbRemov =new JButton("Limpar");
JButton jbEdit =new JButton("Editar");
JButton jbConfir =new JButton("Confirmar");
JButton jbSair =new JButton("Sair");
JButton jbAbre= new JButton("Abre");
JButton jbFecha=new JButton ("Fecha");





public RegistarLivro(){
    
    JPanel pan = new JPanel();
    pan.setLayout(null);
    pan.setBackground(Color.WHITE);
    jlAutor.setBounds(40, 60, 120, 30);
    jtAutor.setBounds(160, 60, 100, 30);
    jbNovo.setBounds(310, 60, 100, 30);
    jtAutor.setEnabled(false);
    pan.add(jlAutor);pan.add(jtAutor);pan.add(jbNovo);
    
    
    jlTitulo.setBounds(40, 130, 120, 30);
    jtTitulo.setBounds(160, 130, 250, 30);
    jtTitulo.setEnabled(false);
    pan.add(jlTitulo);pan.add(jtTitulo);
    
    
    jlGenero.setBounds(40, 190, 250, 30);
    jtGenero.setBounds(160, 190, 250, 30);
    jtGenero.setEnabled(false);
    pan.add(jlGenero);pan.add(jtGenero);
    
    
    jlPublicacao.setBounds(40, 250, 250, 30);
    jtPublicacao.setBounds(160, 250, 250, 30);
    jtPublicacao.setEnabled(false);
    pan.add(jlPublicacao);pan.add(jtPublicacao);
    
    
    jlEdicao.setBounds(40, 316, 250, 30);
    jcEdicao.setBounds(100, 316, 65, 30);
    jcEdicao.setEnabled(false);
    pan.add(jcEdicao);pan.add(jlEdicao);
    
    
    jlVolume.setBounds(190, 316, 250, 30);
    jcVolume.setBounds(250, 316, 65, 30);
    jcVolume.setEnabled(false);
    pan.add(jcVolume);pan.add(jlVolume);
    
 
    jlAno.setBounds(40, 382, 250, 30);
    jcAno.setBounds(160, 382, 100, 30);
    jcAno.setEnabled(false);
    pan.add(jcAno);pan.add(jlAno);
    
    
    jbSair.setBounds(310, 490, 100, 30);
    pan.add(jbSair);
    
    
    jbSave.setBounds(40, 490, 100, 30);
    pan.add(jbSave);
     add(pan);
    setSize(480,620);
    //getContentPane().setBackground(Color.RED);
       
    setVisible(true);
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    setLocationRelativeTo(null);
    setResizable(false);
    setTitle("PZ Project");
    
    ((JPanel)getContentPane()).setOpaque(false); 
    ImageIcon uno=new ImageIcon(this.getClass().getResource("/imagens/projecto1.jpg")); 
    JLabel fundo= new JLabel(); 
    fundo.setIcon(uno); 
    getLayeredPane().add(fundo,JLayeredPane.FRAME_CONTENT_LAYER); 
    fundo.setBounds(0,0,uno.getIconWidth(),uno.getIconHeight());

    
        //ComboBox da Edicao, Volume e ano da Publicacao
        JPanel painel = new JPanel(null);
    jcEdicao=new JComboBox();
    jcEdicao.setBounds(100, 316, 65, 30);
    jcEdicao.addItem("Oitava");
    jcEdicao.addItem("Setima");
    jcEdicao.addItem("Sexta");
    jcEdicao.addItem("Quinta");
    jcEdicao.addItem("Quarta");
    jcEdicao.addItem("Terceira");
    jcEdicao.addItem("Segunda");
    jcEdicao.addItem("Primeira");
    pan.add(jcEdicao);
    
    
    
    jcVolume=new JComboBox();
    jcVolume.setBounds(250, 316, 65, 30);
    jcVolume.addItem("8");
    jcVolume.addItem("7");
    jcVolume.addItem("6");
    jcVolume.addItem("5");
    jcVolume.addItem("4");
    jcVolume.addItem("3");
    jcVolume.addItem("2");
    jcVolume.addItem("1");
    pan.add(jcVolume);
    
    
    jcAno=new JComboBox();
    jcAno.setBounds(160, 382, 100, 30);
    jcAno.addItem("2017");
    jcAno.addItem("2016");
    jcAno.addItem("2015");
    jcAno.addItem("2014");
    jcAno.addItem("2013");
    jcAno.addItem("2012");
    jcAno.addItem("2011");
    jcAno.addItem("2010");
    pan.add(jcAno);
    
    
   
    //Implementacao dos botoes Gravar/salvar e Sair
    
    jbNovo.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
           jbNovoActionPerformed(e);
        }
        private void  jbNovoActionPerformed(ActionEvent e){
            jtAutor.setEnabled(true);
            jtTitulo.setEnabled(true);
            jtGenero.setEnabled(true);
            jtPublicacao.setEnabled(true);
            jcEdicao.setEnabled(true);
            jcVolume.setEnabled(true);
            jcAno.setEnabled(true);
                }
        });     
     
    jbNovo.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
           jbnovActionPerformed(e);
        }
        private void  jbnovActionPerformed(ActionEvent e){
            jtAutor.setEnabled(true);
            jtTitulo.setEnabled(true);
            jtGenero.setEnabled(true);
            jtPublicacao.setEnabled(true);
            jcEdicao.setEnabled(true);
            jcVolume.setEnabled(true);
            jcAno.setEnabled(true);
                }
        });
    
    
    
    jbSair.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
           jbConfirActionPerformed(e);
        }
        private void  jbConfirActionPerformed(ActionEvent e){
            
            dispose();
                    
                }
        });
    
  jbSave.addActionListener(new ActionListener() {  
    
      
      //Removendo
      @Override
   public void actionPerformed(ActionEvent e) {
        if(e.getSource()==jbRemov){
            
         jtAutor.setText("");
         jtTitulo.setText("");
         jtGenero.setText("");
         jtPublicacao.setText("");
         jtCodigo.setText("");
    }
    
           if(e.getSource()==jbFecha){
               System.exit(0);
           }
        
        if(e.getSource()==jbSave){
            try{
            
            PrintWriter arq= new printWriter(jtCodigo.getText()+".txt");
                        
                        arq.println(jtAutor.getText());
                        arq.println(jtTitulo.getText());
                        arq.println(jtGenero.getText());
                        arq.println(jtPublicacao.getText());
                        arq.println(jtCodigo.getText());
                        arq.close();
            JOptionPane.showMessageDialog(null, "Arquivo salvo com sucesso!");
        }
            catch(Exception erro){JOptionPane.showMessageDialog(null, "Arquivo nao foi salvo.Erro:"+erro.getMessage());
          
        }
          
            
            if(e.getSource()==jbAbre) {
              
                try{
                
                String jtCodigo=JOptionPane.showInputDialog("Digite o codigo do cliente");
              BufferedReader arq new BufferedReader(new FileReader(jtCodigo+".txt"));
                        jtAutor.setText("");
                   jtTitulo.setText(arq.readLine);
                   jtGenero.setText(arq.readLine);
                   jtPublicacao.setText(arq.readLine);
                   jtCodigo.setText(arq.readLine);
                    arq.close();
                }catch(Exception erro)
                {
                 JOptionPane.showMessageDialog(null,"Erro:"+erro.getMessage());   
                }

            
            
        }
     
   }

  
   
  
}

}
}
}