import java.io.*;
/**
* Classe per la gestione della persistenza su file di oggetti serializzati
* @author Gianni Messina
* @version 1.0
*/
Classe per la gestione di file che serializzano oggetti
public class Persistenza{
private String nome_file=null,nome_classe=null;
private FileOutputStream fout=null;
private FileInputStream fin=null;
private ObjectOutputStream out=null;
private ObjectInputStream in=null;
/** Costruttore
* @param nome_file
* @param nome_classe
*/
Persistenza(String nome_file,String nome_classe){
this.nome_file = nome_file;
this.nome_classe = nome_classe;
}
/**
* Metodo di apertura dei file in output
*/
public void openOut(){
try{
fout=new FileOutputStream(nome_file,true);
out=new ObjectOutputStream(fout);
}
catch(Exception e){
e.printStackTrace();
}
}
/**
* Metodo di chiusura dei file in output
*/
public void closeOut(){
try{
fout.close();
}
catch(Exception e)
{e.printStackTrace();}
}
public void openIn(){
try{
fin=new FileInputStream(nome_file);
in=new ObjectInputStream(fin);
}
catch(Exception e)
{e.printStackTrace();}
}
public void closeIn(){
try{
fin.close();
}
catch
(Exception e){e.printStackTrace();}
}
/**
* @param x Oggetto da serializzare su file
*/
public void saveToDisk(Object x){
try{
System.out.println("Staiu scriviannu l'oggetto: "+x+"…");
openOut();
out.writeObject(x);
closeOut();
System.out.println("Ho finito!");
}catch
(Exception e){e.printStackTrace();};
}
public Object getFromDisk(){//lettura sequenziale
Object res=null;
try{
System.out.print("Sto leggendo"+nome_file+"…");
openIn();
res=(Object)in.readObject();
closeIn();
}catch(Exception e){e.printStackTrace();};
return res;
}
Esempio d'uso
_______________________________________________________
import java.io.*;
class Elemento implements Serializable
{
private int x;
private int y;
private String Nome;
Elemento(int x,int y, String Nome){
this.x=x;
this.y=y;
this.Nome=Nome;
}
public static void main(String []args) {
try {
Elemento ee1=new Elemento(12,11,"ciccio");
Elemento ee3=new Elemento(12,11,"franco");
Persistenza Pers=new Persistenza("tre.dat","Elemento");
Pers.openOut();
Pers.saveToDisk(ee1);
Pers.saveToDisk(ee3);
Pers.closeOut();
Pers.openIn();
Elemento ee2= (Elemento)Pers.getFromDisk();
System.out.println(ee2.Nome );
ee2=(Elemento)Pers.getFromDisk();
System.out.println(ee2.Nome);
Pers.closeIn();
}
catch(Exception e)
{
System.out.println(e);
}
}
}