[ObjectInputStream] Skippen von Objects?

Surma

Erfahrenes Mitglied
Hallo!
Ich bau gerade fuer einen Kollegen ein Plugin fuer SEIN Programm.
Nun konnte ich durch decompilieren herausfinden, wo und wie er den Path zum Standardbrowser (vom User festgelegt) speichert, da ich diesen Path benoetige.
Und zwar wie folgt:
Code:
ObjectInputStream objectinputstream = new ObjectInputStream(new FileInputStream(new File("dashprop.dat")));
progNames = (Vector)objectinputstream.readObject();
progs = (Vector)objectinputstream.readObject();
rssNames = (Vector)objectinputstream.readObject();
rssUrls = (Vector)objectinputstream.readObject();
actualNewsUrl = (String)objectinputstream.readObject();
windowSize = ((Integer)objectinputstream.readObject()).intValue();
hideOnClose = ((Boolean)objectinputstream.readObject()).booleanValue();
showQuickstart = ((Boolean)objectinputstream.readObject()).booleanValue();
showNews = ((Boolean)objectinputstream.readObject()).booleanValue();
showPlugins = ((Boolean)objectinputstream.readObject()).booleanValue();
standardBrowser = (String)objectinputstream.readObject();  // !|!|!|!|!|!|!|!|!|!|!|!
Vector vector = (Vector)objectinputstream.readObject();
Nun weis ich nicht wie gross die genazen Vectoren sind (meist sind es 10-er Vectoren mit Strings), ergo weiss ich auch nit, wieviele Bytes zwischen Dateianfang und "standardBrowser" sind (ObjectInputStream.SkipBytes() wird also erstmal unbrauchbar). Und da nur wenig Ram zu verfuegung steht, kann ich die ganzen Vectoren auch nicht Zwischenspeichern. Wie kann ich also z.B ganze Objects skippen? Oder wie wuerdet ihr das loesen?

Also kurz: Wie komm ich an den "standardBrowser"-String, ohne alles vorherige zwischenspeichern zu muessen.

PS: Suche hier und bei Google erfolglos, ich hoffe das ist kein "allgemeines Geplaenkel"
 
Zuletzt bearbeitet:
So wie ich das sehe steht der standard Browser immer an elfter Stelle. Da kannst du doch für die Datensätze immer die gleiche Variable verwenden und in einer Schleife einlesen.
Code:
ObjectInputStream objectinputstream = new ObjectInputStream(new FileInputStream(new File("dashprop.dat")));
for (int i=1; i<= 10; i++) {
    gelesenesObjekt = objectinputstream.readObject();
}
standardBrowser = (String)objectinputstream.readObject();
Damit liest du bis zum gewünschten Datensatz ein, überschreibst aber immer die schon gelesenen Daten, es wird also nicht unnötig RAM verschwendet für Daten die du nicht brauchst.
 
Zuletzt bearbeitet:
Es kommt als 10. Eintrag :)
hmm hatte ich auch ueberlegt, bin nur nicht auf die Idee gekommen, einfach als Datentyp Object zu nehmen. SOndern dacht, mann muss fuer jeden verschiedenen Datentyp ne neue Variable definieren. Ich werd das mal als Uebergansversion nehmen, vielleicht kennt ja jemand noch eine Version ohne Zwischenspeichern. Trotzdem Danke!;-)
 
Zuletzt bearbeitet:
Zurück