Gravar ArrayList em arquivo .txt

Olá pessoal estou tentando gravar um ArrayList em um arquivo .txt

Classe principal

[code] //Objeto
Cadastro inserir = new Cadastro();

//ArrayList
ArrayList<Cadastro> cadastro = new ArrayList<Cadastro>();

//Objeto para escrever
Cria abrir = new Cria();

public void MenuCadastro(){ 
    
    //Atributos
    int op = 0;
    
    //Do...While
    do{
        System.out.println("1 - Incluir");
        System.out.println("2 - Mostrar");
        System.out.println("3 - Voltar");
        System.out.println("Entre com a opção");
        op = entra.nextInt();
        
        //Switch
        switch(op){
            case 1: 
                inserir = new Cadastro();
                inserir.Entrada();
                cadastro.add(inserir);
                abrir.Teste(cadastro);
                break;
                
            case 2:
                for(int i=0; i < cadastro.size(); i++){
                    cadastro.get(i).Mostra();
                }
                break;
                
            default:
                System.out.println("Nenhuma opção escolhida");
                break;
        }
    }while(op != 3);
}

[/code]

Classe para criar o arquivo txt e inseir.

public class Cria {

    public void Teste()throws IOException{
        
        
        //Cria o arquivo
        FileOutputStream cria = new FileOutputStream("palavra.txt");
        //Cria o objeto para arquivo
	ObjectOutputStream esc = new ObjectOutputStream(cria);

        //Fecha o objeto
	esc.close();
    }
}

OK, mas qual o problema?

Bom deixa eu explicar, o erro esta na hora de criar o arquivo ele cai direto para Catch

case 1: 
                    inserir = new Cadastro();
                    inserir.Entrada();
                    cadastro.add(inserir);
                    Cria abrir = new Cria();
                    try{
                    abrir.Teste(cadastro);
                    }
                    catch ( IOException ioException )
                    {
                        System.out.println( "Erro de abertura de arquivo." );
                    }
                    break;

Classe Cria

[code]
public class Cria {

public void Teste(List cadastro)throws IOException{

    //Cria o arquivo
    FileOutputStream cria = new FileOutputStream("palavra.txt");
    //Cria o objeto para arquivo
ObjectOutputStream esc = new ObjectOutputStream(cria);

    esc.writeObject(cadastro);
    //Fecha o objeto
esc.close();
}

}[/code]

Na hora de criar o arquivo da erro… cai no catch…

cara tenta usar isso na classe em que esta programando, sem criar outra classe, cria só um método na sua classe principal a que necessita salvar o arquivo:

public void gravaTxt(){

		File file = new File("Lista.txt");
		String nome = ""; // só um exemplo, crie todoas as variaveis que são atributos dos objetos do array list
		String conteudo;
 try	{
	        FileWriter f = new FileWriter (file, true);
	 
	        for(int i = 0; i < seuArrayList; i++){
	        	
	        	nome = seuArrayList.get(i); // chama o atributo do objeto na posição i
                                conteudo = nome;
	        	conteudo += "\r\n";
	        	f.write(conteudo);
	        	
	        }
	        
	        f.close();

	    }catch (IOException e)  {
	            e.printStackTrace();
	    }catch (UnderflowException e) {
			e.printStackTrace();  
		}
	}

Bom, tem que analisar o LOG da exception para ter noção o que aconteceu.

Passa o stacktrace que fica mais fácil para te ajudar

Talvez o problema é o arquivo não existir.

Posta o StackTrace.

Mas acredito que apenas criar o arquivo antes resolva. E voce pode fazer isso via Java.

File f = new File("palavra.txt");
f.createNewFile();
FileInputStream fis = new FileInputStream(f);
//Continua trabalhando com fis

Passa a Stacktrace, mas antes verifica se o caminho do arquivo estar correto :wink:

Desculpa, galera por encher o saco novamente…
Conseguir criar o arquivo de outro jeito menos mau só que agora não estou conseguindo exibir o conteúdo.

[code]
public static void Exibe(){
String nomedoarquivo = “texto.txt”;
List cadastro = null;
FileInputStream fis = null;
ObjectInputStream in = null;
Contato contato = new Contato();

    try{
        fis = new FileInputStream(nomedoarquivo);
        in = new ObjectInputStream(fis);
        cadastro = (ArrayList) in.readObject();
    }
    catch (IOException ex){
        ex.printStackTrace();
} 
    catch (ClassNotFoundException ex){
        ex.printStackTrace();
    }
    
    System.out.println("Tamanho: " + cadastro.size());
System.out.println();
    
    for(int i=0; i<cadastro.size(); i++){
         //Exibe na tela
         String nome = null;
         System.out.println("%15s", cadastro.get(i).nome);
    }
 }[/code]

Ele fala que esta com erro na linha 26"System.out.println("%15s", cadastro.get(i).nome);"
Da erro de variable nome.

Ja tentei modificar para
cadastro.get(i).Mostra();

Que iria pegar o metodo mostra da minha classe contato.

Não seria:

.......
for(int i = 0; i < seuArrayList.size(); i++){ 
.....

Ao invés de

.......
for(int i = 0; i < seuArrayList; i++){ 
.....

??