Ciao a tutti sono nuovo, programmo per la mia scuola (per ora)..
comunque giungendo al punto ho riscontrato dei problemi con le classi ObjectInputStream e ObjectOutputStream...il contesto è una videoteca con cui scrivere/leggere su file binario oggetti che corrispondono ai film presenti.
siccome questo tipo di classi non supporta bene la funzione di append, ci è stato detto che per l'aggiunta di un "film" bisogna riscrivere l'intero contenuto del file binario su uno di appoggio, scrivere l'oggetto da aggiungere e successivamente rinominare il file di appoggio come il sorgente e cancellare il sorgente...
detto questo vi mostro un frammento di codice e vi spiego il problema:
public String write (DVD ogg) {
String error = "";
try {
fis = new FileInputStream ("films.dat");
fos = new FileOutputStream ("appoggio.dat");
in = new ObjectInputStream (fis);
out = new ObjectOutputStream (fos);
while (true) {
try {
out.writeObject ((DVD)in.readObject());
} catch (EOFException eof) { break; }
catch (IOException e) { error = "Errore lettura / scrittura file"; }
catch (ClassNotFoundException cfe) {}
}
fis.close();
in.close();
out.writeObject (ogg);
fos.close();
out.close();
File originale = new File ("films.dat");
File nuovo = new File ("appoggio.dat");
nuovo.renameTo (originale);
originale.delete();
} catch (IOException err) { error = "Errore riscontrato: Apertura/Chiusura Streams";
System.out.println (err); }
return error;
}
}
inizialmente l'errore che mi risultava era FileNotFound...va bene, li creo io e poi ci penso dopo...Ora l'errore che trovo è EndOfFileException, ma come è possibile?? io uso la cattura di questo errore per terminare il ciclo di copia...non riesco a capire cosa non va..
p.s. se vi state chiedendo a cosa serve la stringa error, mi serve per visualizzarla nell' interfaccia grafica.
Aspetto con ansia vostre correzioni...grazie a tutti in anticipo