Kai serijuojate objektą „Java“, duomenis konvertuojate į baitų srautus, kurie vėliau vėl paverčiami originalių duomenų kopija. Jei tai skamba painiai, pagalvokite apie serializavimą šiais terminais. Dirbate su dokumentu ir išsaugokite jį kietajame diske. Kalbant, jūs serijuojate duomenis, kad vėliau galėtumėte gauti tą kopiją. Serializavimas leidžia daug lengviau ir efektyviau perduoti duomenis tinkluose.
Prieš serijuojant objektą svarbu suprasti „Java“pagrindus. Jei naudojote tokias programavimo kalbas kaip Pascal ir senesnes C versijas, žinosite, kad be objektų serijavimo programuotojas turi sukurti atskirą įvesties/išvesties teksto failą duomenims saugoti ir įkelti. Objektų serijavimas „Java“apeina šio teksto failo kūrimą, kad būtų galima saugoti duomenis, taupant laiką ir programavimo išlaidas. Šiame straipsnyje pateikiami objekto „Java“serijavimo veiksmai. Šiame straipsnyje pateiktas pavyzdinis kodas yra naudojamas „The Java Developers Almanac 1.4“.
Žingsniai
Žingsnis 1. Atidarykite „Java“kodavimo objektą, kuriam reikalinga serija, arba sukurkite jį nuo nulio
Žingsnis 2. Pasirinkite „Java“objektą, kurį norite susieti
Šiame pavyzdyje tą objektą pavadinsime „MyObject“.
Žingsnis 3. Įgalinkite objektų serijavimą „Java“, sukurdami „MyObject“klasę, kad įgyvendintų java.io. Serialize sąsają
Tiesiog pridėkite šią kodo eilutę kodo pradžioje, pakeisdami eilutę „viešosios klasės„ MyObject “. Viešosios klasės„ MyObject “įgyvendina java.io. Serializable
4 žingsnis. Dabar jūsų objektas yra serijinis, tai reiškia, kad jį galima parašyti išvesties srautu, pavyzdžiui:
-
Šios kodo eilutės iliustruoja, kaip į failą ar diską įrašyti „MyObject“(ar bet kurį serijinį objektą).
bandyti{
// Serializuoti duomenų objektą į failą
ObjectOutputStream out = naujas ObjectOutputStream (naujas FileOutputStream ("MyObject.ser"));
out.writeObject (objektas);
out.close ();
// Serializuoti duomenų objektą į baitų masyvą
ByteArrayOutputStream bos = naujas ByteArrayOutputStream ();
out = naujas ObjectOutputStream (bos);
out.writeObject (objektas);
out.close ();
// Gaukite serijinio objekto baitus
baitas buf = bos.toByteArray ();
} laimikis (IOException e) {
}
Žingsnis 5. Tai galima perskaityti taip:
-
pabandykite {FileInputStream door = new FileInputStream ("name_of_file.sav"); ObjectInputStream skaitytuvas = naujas ObjectInputStream (durys); MyObject x = naujas MyObject (); x = [MyObject] reader.nextObject ();} catch (IOException e) {e.printStackTrace ();}
Žingsnis 6. Vykdykite serijinį objekto kodą „Java“programoje, kad įsitikintumėte, jog jis veikia efektyviai (neprivaloma)
Žingsnis 7. Išsaugokite ir uždarykite serijinį objektą „Java“
Patarimai
- „Java SE Development Kit 6“serijos patobulinimai leidžia naudoti „ObjectStreamClass“paiešką bet kokiu metodu, kad būtų galima tvarkyti bet kokius serijinius klasės objektus.
- Norėdami pagerinti skaitymo ir rašymo laiką dideliuose objektų medžiuose, naudokite „trumpalaikį“raktinį žodį, pavyzdžiui, kintamuosius, kuriems nereikalingas serijinis leidimas. Tai padidins našumą, nes nebeskaitote ir nerašote nereikalingų duomenų į serijavimo procesą.
Įspėjimai
- „Java“beveik kasmet išleidžia naują kūrėjo rinkinio versiją. Naujos versijos apima atnaujinimus ir pakeitimus, kaip galima serijiškai susieti objektą „Java“. Todėl svarbu stebėti naudojamos versijos pakeitimus.
- Serijuojant objektus negalima užšifruoti duomenų srautų. Todėl prireikus turėsite pasikliauti kitomis programomis ar antriniais tinklo perdavimo procesais, kad apsaugotumėte duomenis.
- Šiuo metu nėra jokios galimybės, leidžiančios įrašyti objektus į atsitiktinės prieigos failą. Vietoj to, baitų masyvo įvesties srautus galite naudoti kaip vietos rezervavimo ženklą, iš kurio galima skaityti ir rašyti objektus. Tačiau įsitikinkite, kad visas objektas yra baitų masyvo sraute, kitaip procesas nepavyks.