Naslov sam kaze o cemu se radi a pri tom se javlja jedan problem
Neka imamo klasu Auto
public class Auto implements java.io.Serializable {
private boolean upaljen;
public Auto() { upaljen = false; }
public void upali () { upaljen = true; }
public void ugasi () { upaljen = false; }
public boolean radi () { return upaljen; }
}
E sad ja hocu da objekate ove klase upisujem u fajl al tako da se ne brisu prethodni objekti.
Ispod je mali program koji to simulira.
Naime prvo se ocitavaju objekti iz fajla.
Moze maks da se ocita 5 objekata a ako ima manje, npr u jednom trenutku nek ih je dva, on ce ih ucitati i tad ce izbaciti Exception koji nista ne radi vec se program tad dalje nastavlja.
Bukvalno koristim Exception za prekid while petlje. Ovo mozda nije najidealnije al to sad nije bitno. Inace mogao bih u dodatnom fajlu drzati int koji bi predstavljao broj objekata. Al kao sto sam rekao to sad nije bitno.
Nakon ocitavanja se ispise broj tih objekata.
I onda se upise jos jedan objekat.
U praksi to radi tako sto posto prvo nema fajla on se stvori, i upise se jedan objekat.
Zatvorim program pa ga ponovo pokrenem sad se ocita onaj prvi objekat, ispise se i upise se jos jedan.
( S tim da taj ispis nije pravi ispis objekata, za to bi morao definisati metodu toString(), vec ako su npr 2 objekta samo ispise a[0] a[1].
Ovo koristim samo da znam koliko je ucitano objekata. )
Opet zatvorim program i pokrenem ga ponovo i tad se ispise samo jedan objekat.
E to je problem jer bi trebalo dva.
I svako naredno pokretanje programa ocitava i ispisuje samo onaj prvi objekat.
Ipak fajl se uvijek povecava sto znaci da se objekti zaista upisuju al je problem pri ocitavanju.
Ja sam pretpostavio sta bi mogao biti problem.
Sumnjam da se pri upisu prvog objekta stavi neki znak koji oznacava kraj fajla.
I kad se upise drugi objekat on se zaista upise al u nastavku a onaj znak ostane.
Sad se pri ocitavanju ocita prvi objekat naidje sa na znak za kraj fajla i on prekine ne znajuci da poslije ima jos objekata.
Al ovo je samo moja pretpostavka.
Uglavnom zna li neko kako da proradi ovo dodavanje objekata?
pozz
import java.io.*;
public class ObjectStreamTest {
public ObjectStreamTest() {
try {
int n=0;
Auto a[]=new Auto[5];
try {
ObjectInputStream in = new ObjectInputStream(new FileInputStream("Ost.txt"));
while(n<5) { a[n] = (Auto)in.readObject(); n++; }
in.close();
} catch(Exception ex) { }
int i;
for(i=0; i<n; i++) System.out.println("a[" + i + "]");
Auto ap=new Auto();
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("Ost.txt",true));
out.writeObject(ap);
out.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
new ObjectStreamTest();
}
}
[Ovu poruku je menjao boris Dj.bl dana 19.07.2008. u 16:03 GMT+1]
[Ovu poruku je menjao boris Dj.bl dana 20.07.2008. u 15:32 GMT+1]









Dodavanje serijalizovanih objekata u fajl ???