MEMon
04-07-2006, 16:08
Ciao a tutti, ho creato una classe per gestire i file che creo per tenere in memoria dei dati.
La classe è questa:
import java.io.*;
public class GestioneFileDati {
FileOutputStream fo=null;
FileInputStream fi=null;
public GestioneFileDati(String path){
try{
fo=new FileOutputStream(path);
fi=new FileInputStream(path);
}
catch(IOException e){
System.out.println("Impossibile aprire il file di dati: "+e);
}
}
public void salva(Object obj){
try{
ObjectOutputStream os=new ObjectOutputStream(fo);
os.writeObject(obj);
os.flush();
os.close();
}
catch(IOException e){
System.out.println("Impossibile salvare i dati: "+e);
}
}
public Object carica(){
Object obj=null;
try{
ObjectInputStream is=new ObjectInputStream(fi);
obj=is.readObject();
is.close();
}
catch(IOException e){
System.out.println("Impossibile caricare i dati: "+e);
}
catch(ClassNotFoundException e){
System.err.println();
}
return obj;
}
public void cambiaFile(String path){
try{
fo=new FileOutputStream(path);
fi=new FileInputStream(path);
}
catch(IOException e){
System.out.println("Impossibile aprire il file di dati: "+e);
}
}
}
C'è un problema, anche se mi sembra che salvi correttamente un oggetto, al momento di ricaricaricarlo mi da l'errore Impossibile caricare il file di dati: java.io.EOFException e se vado a vadere il file che conteneva l'oggetto appare vuoto(sembra che cancelli il contenuto)...ovviamente dopo il salvataggio ero pieno, 4 kbytes.
Questa classe la uso in questo modo:
PER SALVARE...
DatiGiocatore dg=new DatiGiocatore();
GestioneFileDati file=new GestioneFileDati("C:/imm/Data/Giocatore.dat");
public Ambiente(Container cnt){
int[] array={25,4,3,5};
dg.animazione(array);
file.salva(dg);
}
...E PER CARICARE
DatiGiocatore dg=new DatiGiocatore();
GestioneFileDati file=new GestioneFileDati("C:/imm/Data/Giocatore.dat");
public Ambiente(Container cnt){
dg=(DatiGiocatore)file.carica();
System.out.println(dg.animazioe());
}
Dove sbaglio?
La classe è questa:
import java.io.*;
public class GestioneFileDati {
FileOutputStream fo=null;
FileInputStream fi=null;
public GestioneFileDati(String path){
try{
fo=new FileOutputStream(path);
fi=new FileInputStream(path);
}
catch(IOException e){
System.out.println("Impossibile aprire il file di dati: "+e);
}
}
public void salva(Object obj){
try{
ObjectOutputStream os=new ObjectOutputStream(fo);
os.writeObject(obj);
os.flush();
os.close();
}
catch(IOException e){
System.out.println("Impossibile salvare i dati: "+e);
}
}
public Object carica(){
Object obj=null;
try{
ObjectInputStream is=new ObjectInputStream(fi);
obj=is.readObject();
is.close();
}
catch(IOException e){
System.out.println("Impossibile caricare i dati: "+e);
}
catch(ClassNotFoundException e){
System.err.println();
}
return obj;
}
public void cambiaFile(String path){
try{
fo=new FileOutputStream(path);
fi=new FileInputStream(path);
}
catch(IOException e){
System.out.println("Impossibile aprire il file di dati: "+e);
}
}
}
C'è un problema, anche se mi sembra che salvi correttamente un oggetto, al momento di ricaricaricarlo mi da l'errore Impossibile caricare il file di dati: java.io.EOFException e se vado a vadere il file che conteneva l'oggetto appare vuoto(sembra che cancelli il contenuto)...ovviamente dopo il salvataggio ero pieno, 4 kbytes.
Questa classe la uso in questo modo:
PER SALVARE...
DatiGiocatore dg=new DatiGiocatore();
GestioneFileDati file=new GestioneFileDati("C:/imm/Data/Giocatore.dat");
public Ambiente(Container cnt){
int[] array={25,4,3,5};
dg.animazione(array);
file.salva(dg);
}
...E PER CARICARE
DatiGiocatore dg=new DatiGiocatore();
GestioneFileDati file=new GestioneFileDati("C:/imm/Data/Giocatore.dat");
public Ambiente(Container cnt){
dg=(DatiGiocatore)file.carica();
System.out.println(dg.animazioe());
}
Dove sbaglio?