Fala Galera… Um grande abraço a todos, e parabéns para todos que tem a boa vontade de ajudar ao iniciantes em JAVA.
O problema é o seguinte, estou fazendo exercícios de serialização, para fixação. E me deparei com o problema;
Eu fiz um exemplo que encontrei no livro, que é o seguinte: Uma Classe Player (Com 3 atributos: String classe, int lvl, e String []armas), Uma classe para executar, e uma outra para Ler.
Eu fiz esse exercício 2 vezes: A primeira uma Classe Player, uma Classe Executa Player (que tinha a lógica de gravação), e uma Classe para Ler o arquivo gravado…
Desse jeito funcionou.
O segundo exercício, eu fiz com uma Classe a mais: Uma Classe Gravação (aonde eu coloquei a lógica de gravação, e tirei do Executa Player) , e continue com uma nova Classe Executa Player e uma Classe Leia Player…
Só que esse fica me dando esse Erro: java.io.EOFException.
[color=red]Exception in thread “main”[/color] [color=darkblue]java.io.EOFException[/color]
[color=red]at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at serializacao.TestaPlayerLer.main([/color]TestaPlayerLer.java:16[color=red])[/color]
A baixo segue as 4 Classes, se for besteira me desculpem, mas desde já agradeço.
[code]package serializacao;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class Gravacao implements Serializable {
public Gravacao(Object o) throws IOException{
FileOutputStream fo = new FileOutputStream("exemplo.dat");
ObjectOutputStream os = new ObjectOutputStream(fo);
os.writeObject(o);
os.close();
}
}[/code]
[code]
package serializacao;
import java.io.Serializable;
public class Player implements Serializable{
private String classe;
private int lvl;
private String [] armas= new String[10];
public Player(String c, int lvl, String[] a){
classe = c;
this.lvl = lvl;
armas = a;
}
public String informacao(){
String info =("Classe: "+ classe+", Level: "+lvl+", Armas: ");
String teste= "";
for (int i=0; i<armas.length; i++){
teste += armas[i]+" ";
}
return (info + teste);
}
}[/code]
[code]
package serializacao;
import java.io.IOException;
import java.io.Serializable;
import javax.swing.JOptionPane;
public class TestarPlayer {
public static void main(String[] args) {
Player um = new Player("Mago", 5, new String[]{"Magia", "Cajado", "Poções"});
Player dois = new Player("Guerreiro", 4, new String[]{"Espada", "Machado"});
Player tres = new Player("Elfo", 6, new String[]{"Arco e Flecha", "Espada", "Magia"});
System.out.println(um.informacao());
System.out.println(dois.informacao());
System.out.println(tres.informacao());
try {
// Eu tinha feito dessa maneira: new Gravacao(um); + achei que fosse isso!!!
Gravacao gUm = new Gravacao(um);
Gravacao gdois = new Gravacao(dois);
Gravacao gtres = new Gravacao(tres);
JOptionPane.showMessageDialog(null, "Obejeto Gravado!!!", "Informativo...", 1);
System.out.println("Objeto Gravado!!!");
} catch (IOException e) {
e.printStackTrace();
}
}
}[/code]
[code]
package serializacao;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
public class TestaPlayerLer {
public static void main(String[] args) throws IOException, ClassNotFoundException{
FileInputStream fi = new FileInputStream("exemplo.dat");
ObjectInputStream oi = new ObjectInputStream(fi);
//*************** Lendo o objeto... ***************
Object um = oi.readObject();
Object dois = oi.readObject();
Object tres = oi.readObject();
//************** Fechando a Conexão ***************
oi.close();
System.out.println("Objeto Recuparado");
//************** Convertendo os Objetos ***********
Player one = (Player) um;
Player two = (Player) dois;
Player three = (Player) tres;
//********* Informações dos Objetos ***************
System.out.println(one.informacao());
two.informacao();
three.informacao();
}
}[/code]