1
I need to record the created objects in a TXT file and then read the recorded files and show the recorded objects. I searched in several places but I’m not able to solve my problem.
I have a class Client already implementing the Serializable.
package lista7Questao2;
import java.io.*;
import java.util.Scanner;
public class PrincipalClienteQuestao2 {
public static void main(String[] args) throws IOException, ClassNotFoundException {
Scanner sc = new Scanner(System.in);
String dia,
mes,
ano,
sexo,
nome = "";
int age;
Cliente c = new Cliente();
try{
FileOutputStream fileos= new FileOutputStream("D:\\System 32\\POO\\Lista 7\\Cadastro Clientes.txt");
ObjectOutputStream obj = new ObjectOutputStream(fileos);
while (!(nome.equals("fim") || nome.equals("FIM"))){
System.out.println("Nome: ");
nome = sc.nextLine();
if(nome.equals("fim") || nome.equals("FIM")){
System.out.println("Programa encerrado.");
break;
}
System.out.println("dia: ");
dia = sc.nextLine();
System.out.println("Mes: ");
mes = sc.nextLine();
System.out.println("Ano: ");
ano = sc.nextLine();
System.out.println("Sexo: ");
sexo = sc.nextLine();
//SETTANDO OS DADOS PARA AS VARIAVEIS
c.setNome(nome);
c.setDia(dia);
c.setMes(mes);
c.setAno(ano);
c.setSexo(sexo);
age = Integer.parseInt(ano);
int idade = c.calculaIdade(age);
//GRAVANDO O OBJETO CLIENTE NO ARQUIVO TXT
obj.writeObject(c);
//obj.writeObject(c.getDia());
//obj.writeObject(c.getMes());
//obj.writeObject(c.getAno());
//obj.writeObject(c.getSexo());
obj.flush();
obj.close();
FileInputStream is = new FileInputStream("D:\\System 32\\POO\\Lista 7\\Cadastro Clientes.txt");
ObjectInputStream ois = new ObjectInputStream(is);
Cliente c1 = (Cliente) ois.readObject();
ois.close();
System.out.println(c1.toString());
}
}
catch(IOException ex){
ex.printStackTrace();
}finally{
sc.close();
}
/*try{
FileInputStream is = new FileInputStream("D:\\System 32\\POO\\Lista 7\\Cadastro Clientes.txt");
ObjectInputStream ois = new ObjectInputStream(is);
//LEITURA DO OBJETO CLIENTE NO ARQUIVO
Object c1 = ois.readObject();
//System.out.println(c1.toString());
ois.close();
}*/
}
}
I just wanted to tell you what the problem is.
– Jéf Bueno
The error happens on this line: " Client C1 = (Client) ois.readObject();" Exception in thread "main" java.lang.Classcastexception: java.lang.String cannot be cast to lista7Questao2.Client I can’t understand why casting is not working.,
– Guilherme Schults
This Exception is saying that "
ois.readObject();" returns aString, and not an object of the class "Cliente", is very simple. You can try using this String to create an ObjectCliente, but it depends on the data that is in that String and the data needed to instantiate an objectCliente.– Douglas
It worked, thank you :) !
– Guilherme Schults