Dúvida sobre Arquivos

Caríssimos,

venho eu aqui, mais um vez pedir a ajuda de vocês.
Como muitos já sabem estou fazendo um trabalho final de semestres e talz.

Bom minha dúvida hoje é sobre arquivos.
Na verdade falta isso e mais algumas coisas bobas para eu terminar esse trabalho.

Bom olhem um pedaço dessa classe:

package pkgTP;
import java.util.ArrayList;
import java.awt.*;
import javax.swing.*;

public class Loja {
	
	ArrayList<Cliente> cliente;
	ArrayList<Produto> produto;
	
	public Loja(){
		
		cliente = new ArrayList<Cliente>();
		produto = new ArrayList<Produto>();
	}
	

	
	public void cadastraCliente(Cliente cli){
		int id = cli.getId();
		
		for(int i = 0; i < cliente.size(); i++){
			Cliente rem = cliente.get(i);
			if(rem.getId() == id){
				JOptionPane.showMessageDialog(null, "          Essa ID já está cadastrada!\n" +
													"Impossível realizar o cadastro. Tente Novamente", 
													"Cadastrar Cliente", JOptionPane.ERROR_MESSAGE);
				return;
				}
		}
		
		cliente.add(cli);
		JOptionPane.showMessageDialog(null, "Cliente cadastrado com sucesso!", "Cadastrar Cliente", JOptionPane.INFORMATION_MESSAGE);
		
	}
	
	
	public void cadastraProduto(Produto pro){
		produto.add(pro);
	}

Como vocês podem perceber tenho duas arrayLists e todos os meus dados cadastrados vão para elas.
Então minha dúvida é. Gostaria de saber se tem como, gravar em um arquivo txt, quando eu for fechar o programa todo o conteúdo dessas arraylists
e se ao abrir o meu programa, como fazer para devolver todos os dados para a arraylist.

Tem como fazer isso?

Se souberem e puderem me ajudar, mas deixo claro que não sei uma vírgula de arquivos e portanto a ajuda terá que ser grande.

Qualquer dúvida, postem…

Grato

Pablo!

vÊ se ajuda:

http://www.guj.com.br/article.show.logic?id=13

att,

Se eu entendi bem, você escrever estes dados em um arquivo de texto, correto ?! Caso seja, pesquise pela classe File da java.io.

[code] public void salvarEmArquivo(List lista, String nome) throws IOException {
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(nome));
out.writeObject(lista);
out.flush();
out.close();
}

public List carregarDoArquivo(String nome) throws IOException {
ObjectInputStream in = new ObjectInputStream(new FileInputStream(nome));
List lista = (List) in.readObject();
in.close();
return lista;
} [/code]

você pode usar esses métodos.

a ordem para usa-los é:

ArrayList<Cliente> cliente = carregarDoArquivo("clientes"); cliente.add(cli); salvarEmArquivo(cliente,"clientes");

Bom dia douglaskd,

grato por responder minha dúvida.
Porém como não tenho conhecimento nenhum em arquivos, não sei onde e como usar esses métodos;

Eu tentei criar um classe Arquivos e colocar os métodos lá dentro, até ai deu certo, tudo bem,
porém não sei como usar a segunda parte

[quote]a ordem para usa-los é:

[code]

ArrayList cliente = carregarDoArquivo(“clientes”);
cliente.add(cli);
salvarEmArquivo(cliente,“clientes”); [/code] [/quote]

não entendi como colocar isso no meu código.

Se puder explicar.
Grato.

você coloca esse código no lugar da linha 32 do código postado no fórum. como eu não testei, vai aparecer alguns erros

douglaskd obrigado por estar me ajudando,

eu substitui igual você falou e está dando esse erro:

java.io.FileNotFoundException: clientes (O sistema não pode encontrar o arquivo especificado)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.(Unknown Source)
at java.io.FileInputStream.(Unknown Source)
at pkgTP.Loja.carregarDoArquivo(Loja.java:317)
at pkgTP.Loja.cadastraCliente(Loja.java:39)
at pkgTP.CadastraCliente.actionPerformed(CadastraCliente.java:173)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

eu acho que o arquivo não foi criado, aonde devo, criar esse arquivo?

douglaskd o problema de não achar o arquivo eu já resolvi, só que a hora que tento cadastrar um cliente, está dando esse erro olhe:

at pkgTP.Arquivos.carregarDoArquivo(Arquivos.java:21)
at pkgTP.Loja.cadastraCliente(Loja.java:39)
at pkgTP.CadastraCliente.actionPerformed(CadastraCliente.java:173)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Criei a seguinte classe:

[code]package pkgTP;
import javax.swing.;
import java.awt.
;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;

public class Arquivos {

public static void salvarEmArquivo(ArrayList<Cliente> cliente2, String nome) throws IOException {    
	   ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(nome));    
	   out.writeObject(cliente2);    
	   out.flush();    
	   out.close();    
	}    
	    
	public static ArrayList<Cliente> carregarDoArquivo(String nome) throws IOException, ClassNotFoundException {    
	   ObjectInputStream in = new ObjectInputStream(new FileInputStream(nome));    
	   ArrayList<Cliente> lista = (ArrayList<Cliente>) in.readObject();    
	   in.close();    
	   return lista;    
	}   

}
[/code]

Como vc pode ver os métodos estão diferentes, pois o eclipse que realizou essas conversões,
de List para ArrayList,
não sei se é isso que pode estar dando erro.

Se puder ver.

Grato
Pablo

vamos tentar assim:

ObjectInputStream in = new ObjectInputStream(new FileInputStream(new File(nome)); 

douglaskd, o parâmetro nome passado pelo:

pode ser o caminho do arquivo e o nome dele?
Porque se eu coloco só o nome da outro erro ainda.

há e eu troquei, tbm não deu certo, está dando o mesmo erro que eu mostrei abaixo.

dê uma olhada nesse código, testei e funcionou

ah… tinha me esquecido, a classe Cliente deve implementar serializable

[code]import java.io.*;
import java.util.ArrayList;

public class testaarquivo {
public static void salvarEmArquivo(ArrayList cliente2, String nome) throws IOException {
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(nome));
out.writeObject(cliente2);
out.flush();
out.close();
}
@SuppressWarnings(“unchecked”)
public static ArrayList carregarDoArquivo(String nome) throws IOException, ClassNotFoundException {
ObjectInputStream in = new ObjectInputStream(new FileInputStream(nome));
ArrayList lista = (ArrayList) in.readObject();
in.close();
return lista;
}

public static void main(String[] args) throws IOException, ClassNotFoundException {
Cliente cliente = new Cliente();	
ArrayList<Cliente> cliente2 = new ArrayList<Cliente>();
cliente.setNome("Amaral");
cliente2.add(cliente);
salvarEmArquivo(cliente2,"Clientes");
cliente2 = carregarDoArquivo("Clientes");
System.out.println(cliente2);

}
}[/code]

douglaskd, realmente seu modelo funciona,

porém quando eu o utilizo similarmente em minhas classes, alguns componentes
do meu conjunto de classes apresentam erros que eu não tenho ideia de como arrumá-los.

Mas muito grato pela sua colaboração.

a parte que eu te mandei é o core da gravação…o resto é a forma que o programa chama o método

então é complicado, o erro deve estar nas classes que estão chamando esses métodos, mais não tenho como saber…

envie mais código aonde você chama o método e suas classes, lembrando que a classe Cliente deve implementar Serializable

Vou Mandar minhas principais classes ok:

Primeira Classe Loja: Minha classe principal:

[code]public class Loja {

ArrayList<Cliente> cliente;
ArrayList<Produto> produto;

public Loja(){
	
	cliente = new ArrayList<Cliente>();
	produto = new ArrayList<Produto>();
}



public void cadastraCliente(Cliente cli) /*throws IOException, ClassNotFoundException*/{
	int id = cli.getId();
	
	for(int i = 0; i < cliente.size(); i++){
		Cliente rem = cliente.get(i);
		if(rem.getId() == id){
			JOptionPane.showMessageDialog(null, "          Essa ID já está cadastrada!\n" +
												"Impossível realizar o cadastro. Tente Novamente", 
												"Cadastrar Cliente", JOptionPane.ERROR_MESSAGE);
			return;
			}
	}
	   
	cliente.add(cli);    
	//Arquivos.salvarEmArquivo(cliente,"Clientes"); 
	JOptionPane.showMessageDialog(null, "Cliente cadastrado com sucesso!", "Cadastrar Cliente", JOptionPane.INFORMATION_MESSAGE);
	//cliente = Arquivos.carregarDoArquivo("Clientes");
	//System.out.println(cliente);
	
}


public void cadastraProduto(Produto pro){
	produto.add(pro);
}


public void excluirCliente(int id){ 
	
	int cont = 0;
	for(int i = 0; i < cliente.size(); i++){
		Cliente cli = cliente.get(i);
	if(cli.getId() == id){
		int op = JOptionPane.showConfirmDialog(null, 
				"Você deseja realmente remover esse Cliente?" +
				"\n\n ID: " + cli.getId() + 
				"\n Nome: " + cli.getNome()+
				"\n Fone: " + cli.getFone() + 
				"\n Celular: " + cli.getCelular() + "\n" +
				"\n Endereço" +
				"\n---------------------------------------------" +
				"\n Rua:  " + cli.getEndereco().getRua() + 
				"\n Numero: " + cli.getEndereco().getNumerocasa() +
				"\n Bairro: " + cli.getEndereco().getBairro() +
				"\n Complemento: " + cli.getEndereco().getComplemento() + 
				"\n Cidade: " + cli.getEndereco().getCidade() + 
				"\n Cep: " + cli.getEndereco().getCep() + 
				"\n UF: " + cli.getEndereco().getEstado() + 
				"\n",  
		         "Remover Cliente", JOptionPane.OK_CANCEL_OPTION);  
			
	        cont = 1;
	        if (op == JOptionPane.CANCEL_OPTION)
	        	break;
	        
	        cliente.remove(i);
	              
	        if (op == JOptionPane.OK_OPTION)  
	            JOptionPane.showMessageDialog(null, "Cliente removido com sucesso!", "Remover Cliente", JOptionPane.INFORMATION_MESSAGE);  
	        break;
		}
	if(cont != 1)
		JOptionPane.showMessageDialog(null, "Nenhum cliente encontrado!", "Remover Cliente", JOptionPane.ERROR_MESSAGE);
		
	
	}
	
}



public void removerProduto(int cod){
	
	for(int i = 0; i < produto.size(); i++){
		if(produto.get(i).getCodigo() == cod){
			
			produto.remove(i);
				
		}
	}
}



public void procurarCliente(){
	
	ProcurarCli pc =  new ProcurarCli();
	pc.setVisible(true);
	pc.setSize(300, 300);
	
}


private class ProcurarCli extends JFrame{
	
	
	private JList lclientes;
	private String l1 = "ID      Cliente        ";
	
	public ProcurarCli(){
	super("Procurar Cliente");
	getContentPane().setLayout(new GridLayout(1,1));
	JPanel pbuscacli = new JPanel(new GridLayout(1,1));
	

	lclientes = new JList();
	
	lclientes.setVisibleRowCount(5); 
    lclientes.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    pbuscacli.add(lclientes);
    pbuscacli.add(new JScrollPane(lclientes));
    getContentPane().add(pbuscacli);
    
   
	popLista();
    
	}
	
	public void popLista(){
		
		lclientes.setModel( new DefaultListModel());
		DefaultListModel modelo = ( DefaultListModel ) lclientes.getModel();  
		
		modelo.addElement(l1);
		
		for ( int i = 0; i < cliente.size(); i++ )  
		    modelo.addElement(cliente.get(i).getId() + "   " + cliente.get( i ).getNome() );  
		
	}	
}//Fim da Classe ProcurarCli		


public void procurarProduto(int op){
	
	ProcurarPro pp =  new ProcurarPro();
	pp.setVisible(true);
	pp.setSize(500, 300);
	pp.popLista(op);
	
	
}


private class ProcurarPro extends JFrame{


private JList lprodutos;
private String l1 = "  Produtos Encontrados:    ";
private String l2 = " ";

public ProcurarPro(){
super("Procurar Produto");
getContentPane().setLayout(new GridLayout(1,1));
JPanel pbuscapro = new JPanel(new GridLayout(1,1));


lprodutos = new JList();

lprodutos.setVisibleRowCount(5); 
lprodutos.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
pbuscapro.add(lprodutos);
pbuscapro.add(new JScrollPane(lprodutos));
getContentPane().add(pbuscapro);

}

public void popLista(int op){
	
	lprodutos.setModel( new DefaultListModel());
	DefaultListModel modelo = ( DefaultListModel ) lprodutos.getModel();  
	
	modelo.addElement(l1);
	modelo.addElement(l2);
	
	for ( int i = 0; i < produto.size(); i++ ){
		if(op == 1){
		if(produto.get(i) instanceof Calcado){
			Calcado cal = (Calcado) produto.get(i);
	    modelo.addElement("Descrição: "  + cal.getDescricao() + "   Cor: " + cal.getCor() + "  Número: " + cal.getNumero());} } 
		
		if(op == 2){
		if(produto.get(i) instanceof Confecao){
			Confecao con = (Confecao) produto.get(i);
	    modelo.addElement(con.getDescricao() + "  " + con.getNumero());}} 
		
		if(op == 3){
		if(produto.get(i) instanceof ProdutosCama){
			ProdutosCama pc = (ProdutosCama) produto.get(i);
	    modelo.addElement(pc.getDescricao() + "  " + pc.getTipo());}
		}  		
	}	
}

}//Fim da Classe ProcurarProdutoPro

}
[/code]

Segunda Classe Cliente

[code]
public class Cliente {

private String nome, cpf, data_nascimento, fone, celular;
private Endereco endereco;
private int id;


public Cliente(int id, String nome, String cpf, String datanascimento, String fone,
	 	        String celular, Endereco endereco ){
	this.nome = nome;
	this.cpf = cpf;
	this.data_nascimento = datanascimento;
	this.fone = fone;
	this.celular = celular;
	this.endereco = endereco;
	this.id = id;
	
}



public String getNome() {
	return nome;
}


public void setNome(String nome) {
	this.nome = nome;
}


public String getCpf() {
	return cpf;
}


public void setCpf(String cpf) {
	this.cpf = cpf;
}


public String getDatanascimento() {
	return data_nascimento;
}


public void setDatanascimento(String datanascimento) {
	this.data_nascimento = datanascimento;
}


public String getFone() {
	return fone;
}


public void setFone(String fone) {
	this.fone = fone;
}


public Endereco getEndereco() {
	return endereco;
}


public void setEndereco(Endereco endereco) {
	this.endereco = endereco;
}

public void setId(int id) {
	this.id = id;
}

public int getId() {
	return id;
}



public void setCelular(String celular) {
	this.celular = celular;
}



public String getCelular() {
	return celular;
}
[/code]

Terceira Classe Testes : Preste atenção nessa classe, que é aonde estava aparecendo um dos erros, em static Loja loja = new Loja();
Essa loja, é a que eu uso para cadastrar ou excluir tudo o que eu faço no programa.

[code]public class Testes extends JFrame implements ActionListener {

private JButton cadascli, removercli, cadasconf, removerpro, cadascal, removerprocalc,
				cadascama, removerprocama, procurarcli, procurarpro;
static Loja loja = new Loja();

public Testes(){
	super("Testes");
	JPanel cad = new JPanel(new GridLayout(8,1));
	getContentPane().add(cad);
	
	cadascli = new JButton("Clique aqui para se cadastrar");
	cad.add(cadascli);
	removercli = new JButton("Remover Cliente");
	cad.add(removercli);
	cadasconf = new JButton("Cadastrar Produto - Confecção");
	cad.add(cadasconf);
	removerpro = new JButton("Remover Produto");
	cad.add(removerpro);
	cadascal = new JButton("Cadastrar Produto - Calçado");
	cad.add(cadascal);
	cadascama = new JButton("Cadastrar Produto - Produtos de Cama");
	cad.add(cadascama);
	procurarcli = new JButton("Procura Cliente");
	cad.add(procurarcli);
	procurarpro = new JButton("Procura Produto");
	cad.add(procurarpro);
	
	
	cadascli.addActionListener(this);
	removercli.addActionListener(this);
	cadasconf.addActionListener(this);
	removerpro.addActionListener(this);
	cadascal.addActionListener(this);
	cadascama.addActionListener(this);
	procurarcli.addActionListener(this);
	procurarpro.addActionListener(this);
	
}


public void actionPerformed(ActionEvent action) {

	if(action.getSource() == cadascli){
		
		CadastraCliente obj = new CadastraCliente();
		obj.setVisible(true);
		obj.setLocation(400,200);
		obj.setResizable(false);
	}
	
	if(action.getSource() == removercli){
		
		String sid;
		int iid;
		
		if(Testes.loja.cliente.size() == 0){
			JOptionPane.showMessageDialog(null, "Nenhum cliente cadastrado!", "Remover Cliente", JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		sid = JOptionPane.showInputDialog(null,"Digite a ID do cliente que deseja Remover: ", "Remover Cliente", JOptionPane.PLAIN_MESSAGE);
		iid = Integer.parseInt(sid);
		
		if(sid == null)
			return;
		else
		loja.excluirCliente(iid);
	
	}
	
	
	if(action.getSource() == cadasconf){
		
		CadastraConfeccao conf = new CadastraConfeccao();
		conf.setVisible(true);
		conf.setLocation(400,200);
		conf.setResizable(false);
		
	}
	
	
	if(action.getSource() == removerpro){
		
		if(Testes.loja.produto.size() == 0){
			JOptionPane.showMessageDialog(null, "Nenhum Produto cadastrado!", "Remover Produto - Calçado", JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		RemoverProduto rempro = new RemoverProduto();
		rempro.setVisible(true);
		rempro.setLocation(400, 200);
		rempro.setResizable(false);
		
	}
	
	
	
	if(action.getSource() == cadascal){
		
		CadastraCalcado conf = new CadastraCalcado();
		conf.setVisible(true);
		conf.setLocation(400,200);
		conf.setResizable(false);
		
	}
	
	
	if(action.getSource() == cadascama){
		
		CadastraProdutosCama cam = new CadastraProdutosCama();
		cam.setVisible(true);
		cam.setLocation(400,200);
		cam.setResizable(false);
		
	}
	
	if(action.getSource() == procurarcli){
		
		if(loja.cliente.size() == 0)
			JOptionPane.showMessageDialog(null, "Nenhum Cliente Cadastrado!", "Procurar Cliente", JOptionPane.ERROR_MESSAGE);
		else	
		 loja.procurarCliente();
		 
		
		
	}
	
	if(action.getSource() == procurarpro){
		
		if(loja.produto.size() == 0)
			JOptionPane.showMessageDialog(null, "Nenhum Produto Cadastrado!", "Procurar Produto", JOptionPane.ERROR_MESSAGE);
		else{
		 Opcao op = new Opcao();
		 op.setVisible(true);
		 op.setLocation(400, 200);
		 op.setResizable(false);
		 
		}
		
	}
	
	
}
	
	private class Opcao extends JFrame implements ActionListener{
		
		private JButton op1, op2, op3;
		private int op;
		
		public Opcao(){
			super("Buscar Produto");
			setSize(600,300);
			getContentPane().setLayout(new GridLayout(1,1));
			JPanel bp = new JPanel(null);
			
			op1 = new JButton("Buscar Calçados");
			op2 = new JButton("Buscar Confecção");
			op3 = new JButton("Buscar Cama");
			
			bp.add(op1);
			bp.add(op2);
			bp.add(op3);
			
			op1.setBounds(50, 100, 150, 20);
			op2.setBounds(200, 100, 150, 20);
			op3.setBounds(350, 100, 150, 20);
			
			getContentPane().add(bp);
			
			op1.addActionListener(this);
			op2.addActionListener(this);
			op3.addActionListener(this);
		}
		
		public void actionPerformed(ActionEvent action){
			
			
			if(action.getSource()== op1){
				setOp(1);				
			}
		
			if(action.getSource()== op2){
				setOp(2);
				
			}
			
			if(action.getSource()== op3){
				setOp(3);
				
			}
			
			loja.procurarProduto(op);
		}

		public void setOp(int op) {
			this.op = op;
		}

		public int getOp() {
			return op;
		}
	
	
	}//Fim da classe Opcao

}
[/code]

Quarta classe CadastraCliente - o que está comentado, o próprio eclipse que colocou quando eu add os métodos que vc indicou
e os outros dados que estão comentados nas classes acima, coloquei, porque senão o programa não funcionaria e eu estava precisando
fazer alterações em outras coisas

[code]
public class CadastraCliente extends JFrame implements ActionListener {

	private JLabel lnome, lfone, lcelular, lrua, lcpf, lnumero, lcomplemento, lcidade, 
	lbairro, lcep, luf, ldata_nascimento, lobrig, lid;
	
	private JTextField tnome, tfone, tcelular, trua, tcpf, tnumero, 
	   tcomplemento, tcidade, tbairro, tcep, tdata_nascimento, tuf, tid;
	
	private JButton bcadastro, blimpar;
	
	

	
	public CadastraCliente(){
		super("NewOptionStore - Cadastro de Clientes");
		
		setSize(650,300);
		getContentPane().setLayout(new GridLayout(1,1));
		JPanel pccli = new JPanel(null);

		bcadastro = new        JButton("Cadastrar");
		blimpar = new		   JButton("Limpar");
		
		lid = new 				JLabel("ID do Cliente:");
		lnome = new 		   	JLabel("*Nome:");
		lrua = new				JLabel("*Rua:");
		lfone = new            	JLabel("Fone:");
		lcelular = new         	JLabel("Cel:");
		lcpf = new				JLabel("*CPF:");
		lnumero = new          	JLabel("*Numero:");
		lcomplemento = new     	JLabel("Complemento:");
		lbairro = new          	JLabel("*Bairro:");
		lcidade = new          	JLabel("*Cidade:");
		lcep = new             	JLabel("CEP:");
		ldata_nascimento = new  JLabel("*Data de Nascimento:");
		luf = new				JLabel("*UF:");
		lobrig = new				JLabel("*Campos com asterisco são de preenchimento obrigatório.");

		tid = new				JTextField();
		tnome = new 	    	JTextField();
		trua = new  	    	JTextField();
		tfone = new  	        JTextField();
		tcelular = new 	        JTextField();
		tcpf = new 			    JTextField();	
		tnumero = new 		    JTextField();
		tcomplemento = new 	    JTextField();
		tbairro = new 	  	  	JTextField();
		tcidade = new 	  	  	JTextField();
		tcep = new 		  	  	JTextField();
		tdata_nascimento = new 	JTextField();
		tuf = new				JTextField();
		
		getContentPane().add(pccli);
		
		pccli.add(lid);
		pccli.add(tid);
		pccli.add(bcadastro);
		pccli.add(blimpar);
		pccli.add(tnome);
		pccli.add(lrua);
		pccli.add(trua);
		pccli.add(tfone);
		pccli.add(tcelular);
		pccli.add(lnome);
		pccli.add(lfone);
		pccli.add(lcelular);
		pccli.add(lrua);
		pccli.add(tcpf);
		pccli.add(tnumero);
		pccli.add(lnumero);
		pccli.add(lcomplemento);
		pccli.add(tcomplemento);
		pccli.add(tbairro);
		pccli.add(lbairro);
		pccli.add(tcep);
		pccli.add(lcep);
		pccli.add(tcidade);
		pccli.add(lcidade);
		pccli.add(tdata_nascimento);
		pccli.add(ldata_nascimento);
		pccli.add(lcpf);
		pccli.add(lobrig);
		pccli.add(tuf);
		pccli.add(luf);
		
		
		
		lid.setBounds		      (400,170,100,20);
		tid.setBounds		      (500,170,50,20);
		lnome.setBounds           (10,20,120,20);
		tnome.setBounds           (60,20,500,20);	
		trua.setBounds            (60,50,430,20);
		lrua.setBounds            (10,50,30,20);
		tnumero.setBounds         (560,50,80,20); 
		lnumero.setBounds         (500,50,120,20);
		lbairro.setBounds         (10,80,50,20);
		tbairro.setBounds         (60,80,130,20);
		lcomplemento.setBounds    (200,80,190,20);
		tcomplemento.setBounds    (300,80,130,20);
		lcidade.setBounds         (10,110,60,20);
		tcidade.setBounds         (60,110,300,20);
		lcep.setBounds            (370,110,120,20);
		tcep.setBounds        	  (410,110,120,20);
		tuf.setBounds			  (570,110,50,20);
		luf.setBounds			  (540,110,30,20 );
		lcpf.setBounds            (10,140,100,20);
		tcpf.setBounds            (60,140,130,20);
		ldata_nascimento.setBounds(200,140,150,20);
		tdata_nascimento.setBounds(330,140,150,20);
		tfone.setBounds           (60,170,130,20);
		lfone.setBounds           (10,170,120,20);
		tcelular.setBounds        (240,170,130,20);
		lcelular.setBounds        (200,170,120,20);
	
		bcadastro.setBounds       (90,210,120,20);
		blimpar.setBounds         (230,210,120,20);
		lobrig.setBounds           (280,240,400,20);
		
		
		bcadastro.addActionListener(this);	
		blimpar.addActionListener(this);
	}
	
	public void actionPerformed(ActionEvent action){
		
		
		if(action.getSource()== bcadastro){
			
			int id, numcasa;
			
			if(tid.getText().equalsIgnoreCase("") || tnumero.getText().equalsIgnoreCase("") || tnome.getText().equalsIgnoreCase("") || trua.getText().equalsIgnoreCase("") || 
					tcpf.getText().equalsIgnoreCase("") || tbairro.getText().equalsIgnoreCase("") || tcidade.getText().equalsIgnoreCase("") || 
					tdata_nascimento.getText().equalsIgnoreCase("") || tuf.getText().equalsIgnoreCase("") || tdata_nascimento.getText().equalsIgnoreCase("") ){
				JOptionPane.showMessageDialog(this, "Há campos de preenchimento obrigatório vazios!");
				return;
			}
			
			
			try{
				id = Integer.parseInt(tid.getText());
			}catch(NumberFormatException nf){
				JOptionPane.showMessageDialog(this, "Valor digitado no campo ID é um caracter inválido!");
				return;
			}
			
			
			try{
				numcasa = Integer.parseInt(tnumero.getText());
				
			}catch(NumberFormatException nf){
				JOptionPane.showMessageDialog(this, "Valor digitado no campo numero é um caracter inválido!");
				return;
			}
			
			
			Cliente cli = new Cliente(id, tnome.getText(), tcpf.getText(), tdata_nascimento.getText(), 
									 tfone.getText(),tcelular.getText(), new Endereco(trua.getText(), 
									 tbairro.getText(), tcidade.getText(), tcomplemento.getText(),
									 tcep.getText(), tuf.getText(), numcasa));
			
			
			//try {
				Testes.loja.cadastraCliente(cli);
			/*} catch (IOException e) {
				e.printStackTrace();
			} catch (ClassNotFoundException e) {
				e.printStackTrace();
			}*/
		
			}
		
		else if(action.getSource() == blimpar){
			
			tid.setText(""); tnumero.setText(""); tnome.setText(""); trua.setText(""); tcpf.setText(""); tbairro.setText(""); tcidade.setText(""); 
			tdata_nascimento.setText(""); tuf.setText(""); tcelular.setText(""); tfone.setText(""); tcomplemento.setText(""); 
			tcep.setText("");
			}
		
		
	}

}[/code]

E por último a Classe Arquivos.

[code]public class Arquivos {

public static void salvarEmArquivo(ArrayList<Cliente> cliente2, String nome) throws IOException {    
	   ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(nome));    
	   out.writeObject(cliente2);    
	   out.flush();    
	   out.close();    
	}    
	    
	public static ArrayList<Cliente> carregarDoArquivo(String nome) throws IOException, ClassNotFoundException {    
	 ObjectInputStream in = new ObjectInputStream(new FileInputStream(new File(nome)));    
	   ArrayList<Cliente> lista = (ArrayList<Cliente>) in.readObject();    
	   in.close();    
	   return lista;    
	}   

[/code]

Bom acho que com isso é suficiente para achar o erro.
Se achar, me diga. Grato.

PS .Minha Main só instancia uma Janela da Classe Testes.

vamos fazer um teste…

na classe loja:

public Loja(){ cliente = Arquivos.carregarDoArquivo("Clientes"); // coloque isso produto = new ArrayList<Produto>(); }

esse seu método cadastraCliente…não cadastra…

crie esse metodo:

public boolean clienteJaExiste(Cliente cli){ cliente = Arquivos.carregarDoArquivo("Clientes"); int id = cli.getId(); for(int i = 0; i < cliente.size(); i++){ Cliente rem = cliente.get(i); if(rem.getId() == id){ JOptionPane.showMessageDialog(null, "Essa ID já está cadastrada!\n" + "Impossível realizar o cadastro. Tente Novamente", "Cadastrar Cliente", JOptionPane.ERROR_MESSAGE); return true; } } return false; }

o método cadastraCliente fica +/- assim:

public void cadastraCliente(Cliente cli) /*throws IOException, ClassNotFoundException*/{ cliente = Arquivos.carregarDoArquivo("Clientes"); if(!clienteJaExiste(cli)){ cliente.add(cli); Arquivos.salvarEmArquivo(cliente,"Clientes"); JOptionPane.showMessageDialog(null, "Cliente cadastrado com sucesso!", "Cadastrar Cliente", JOptionPane.INFORMATION_MESSAGE); cliente = Arquivos.carregarDoArquivo("Clientes"); } }

na classe Cliente coloque isso:

public class Cliente implements Serializable{ 

e na classe arquivo mude essa linha:

ObjectInputStream in = new ObjectInputStream(new FileInputStream(nome)); // tirei o new file pois aqui funcionou sem ele

acho que isso ja vai melhorar alguma coisa :roll:

teste ai por favor…e corrija os erros de escrita, estou sem netbeans aqui em casa

douglaskd, o único erro que está apresentando no nomento é na classe Testes nessa parte:

static Loja loja = new Loja();

e sem essa loja, como você pode ver, nenhum método meu funciona, pois foi o jeito que eu arranjei de criar
uma instancia de loja somente, que poderia ser usada por todos os outros.

Se você souber alguma solução.

E volto a agradecer por me ajudar.

Grato.!