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();
}
}
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();
}
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();
}
}