Re: Jak deserializovat poškozená data?
Dobrý večer, hlásím, že tento přístup byl úspěšný. Hned po defaultReadObject() je ta instance plně funkční a lze na ní cokoliv normálně volat nebo třeba znovu serializovat. Obsluhou EOFException jsem se moc nezabýval, stačilo mi vytáhnout jen ty pod-objekty hlavního objektu, které byly 100% úspěšné. A do jdeserialize jsem naštěstí nemusel šahat :-) Ještě jednou díky! Jarda Dne 19.6.2014 10:47, Jiri Holy napsal(a): Nezkoušel jsem to, ale první co mě napadá, je dělat tu deserializaci trochu víc manuálně. Co tím myslím: u těch datových tříd přetížit jejich metody pro čtení něčím jako: private void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException { try { stream.defaultReadObject(); } catch (EOFException e) { // a neco delat, lze predpokladat, ze nektere atributy teto tridy uz jsou deserializovane ... } } Snad tenhle snippet ukazuje alespoň dobrým směrem. Jiří Holý -- Jaroslav Kačer Prague, Czech Republic, EU Mail: jaros...@kacer.biz Phone: +420.723.914.123
Re: Jak deserializovat poškozená data?
Nezkoušel jsem to, ale první co mě napadá, je dělat tu deserializaci trochu víc manuálně. Co tím myslím: u těch datových tříd přetížit jejich metody pro čtení něčím jako: private void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException { try { stream.defaultReadObject(); } catch (EOFException e) { // a neco delat, lze predpokladat, ze nektere atributy teto tridy uz jsou deserializovane ... } } Snad tenhle snippet ukazuje alespoň dobrým směrem. Jiří Holý On 19/06/2014 8:28 a.m., Jaroslav Kačer wrote: Dobrý den! Mám soubor o velikosti několika MB, který obsahuje serializované javovské objekty (bajtkód i zdrojáky mám). Problém je v tom, že tento soubor je z nějakého důvodu useknutý, tudíž deserializace oprávněně skončí s výjimkou EOFException. Chtěl bych z těch dat přečíst alespoň něco, co se dá. Nenapadá vás nějaký způsob, jak o provést? Zkusil jsem například nástroj jdeserialize [1], ale bohužel padá také. Celý obsah je jeden objekt, ve kterém jsou vnořeny další objekty, tudíž nemůžu použít deserializaci po kouskách, kdy bych si načtený objekt někam uložil a zkusil další. Je to jedno volání ObjectInputStream.readObject(). Nemáte na to někdo nějaký fígl? Předem děkuji za jakýkoliv tip! Jarda [1] https://code.google.com/p/jdeserialize/
Re: Jak deserializovat poškozená data?
Caff, No ak ti to stoji za tu namahu, tak tu je popis ako to cele funguje a je tam aj link na popis protokolu http://javapapers.com/core-java/java-serialization/ Ja by som si stiahol zdrojaky jdeserialize, tam je implementacia toho protokolu. Len to treba trocha ukecat ;) Napr. aby vnorene objekty co dekoduje, hned zapisoval cez xml serializaciu do suboru... Arsi *From:* Jaroslav Kačer jaros...@kacer.biz *Sent:* Wednesday, June 18, 2014 10:28PM *To:* Java *Subject:* Jak deserializovat poškozená data? Dobrý den! Mám soubor o velikosti několika MB, který obsahuje serializované javovské objekty (bajtkód i zdrojáky mám). Problém je v tom, že tento soubor je z nějakého důvodu useknutý, tudíž deserializace oprávněně skončí s výjimkou EOFException. Chtěl bych z těch dat přečíst alespoň něco, co se dá. Nenapadá vás nějaký způsob, jak o provést? Zkusil jsem například nástroj jdeserialize [1], ale bohužel padá také. Celý obsah je jeden objekt, ve kterém jsou vnořeny další objekty, tudíž nemůžu použít deserializaci po kouskách, kdy bych si načtený objekt někam uložil a zkusil další. Je to jedno volání ObjectInputStream.readObject(). Nemáte na to někdo nějaký fígl? Předem děkuji za jakýkoliv tip! Jarda [1] https://code.google.com/p/jdeserialize/
Re: Jak deserializovat poškozená data?
Dobrý den, děkuji oběma za odpovědi, vydám se asi nejdříve tím lehčím směrem s úpravou readObject(), pokud to nepomůže, začnu se hrabat v jdeserialize, i když se mi do toho teda vůbec nechce. Pokud dojdu k nějakým rozumným výsledkům, tak je sem postnu. Mějte se fajn, Jarda Dne 19.6.2014 12:03, arsi napsal(a): Caff, No ak ti to stoji za tu namahu, tak tu je popis ako to cele funguje a je tam aj link na popis protokolu http://javapapers.com/core-java/java-serialization/ Ja by som si stiahol zdrojaky jdeserialize, tam je implementacia toho protokolu. Len to treba trocha ukecat ;) Napr. aby vnorene objekty co dekoduje, hned zapisoval cez xml serializaciu do suboru... Arsi -- Jaroslav Kačer Prague, Czech Republic, EU Mail: jaros...@kacer.biz Phone: +420.723.914.123