Երբ Java- ում օբյեկտ եք սերիալիզացնում, տվյալները փոխակերպում եք բայթ հոսքերի, որոնք հետագայում նորից վերածվում են սկզբնական տվյալների պատճենի: Եթե սա շփոթեցուցիչ է թվում, մտածեք սերիալիզացիայի մասին հետևյալ պայմաններով: Դուք աշխատում եք փաստաթղթի վրա, այնուհետև պահեք այն ձեր կոշտ սկավառակի վրա: Դուք, խոսքի ձևով, սերիալավորում եք տվյալները, որպեսզի հետագայում կարողանաք ստանալ այդ պատճենը: Սերիալիզացիան ցանցերի տվյալների փոխանցումը շատ ավելի հեշտ և արդյունավետ է դարձնում:
Կարևոր է, որ դուք հասկանաք Java- ի հիմունքները ՝ նախքան օբյեկտի սերիալացումը: Եթե դուք օգտագործել եք ծրագրավորման լեզուներ, ինչպիսիք են Pascal- ը և C- ի հին տարբերակները, ապա կիմանաք, որ առանց օբյեկտի սերիականացման ծրագրավորողը պետք է ստեղծի առանձին I/O տեքստային ֆայլ ՝ տվյալները պահելու և բեռնելու համար: Java- ում օբյեկտների սերիալիզացիան շրջանցում է այս տեքստային ֆայլի ստեղծումը ՝ տվյալներ պահելու համար, խնայելով ժամանակ և ծրագրավորման ծախսեր: Հետևյալ հոդվածը պարունակում է Java- ում օբյեկտի սերիալիզացիայի քայլեր: Այս հոդվածի կոդի նմուշը օգտագործվում է The Java Developers Almanac 1.4 -ի միջոցով:
Քայլեր
Քայլ 1. Բացեք Java կոդավորման օբյեկտը, որը պահանջում է սերիալացում կամ ստեղծել այն զրոյից:
Քայլ 2. Ընտրեք այն օբյեկտը Java- ում, որը ցանկանում եք սերիալացնել:
Այս օրինակում մենք այդ օբյեկտը կանվանենք «MyObject»:
Քայլ 3. Միացրեք օբյեկտի սերիալացումը Java- ում ՝ MyObject դասին ստիպելով իրականացնել java.io. Serialize ինտերֆեյսը:
Կոդի սկզբում պարզապես ավելացրեք հետևյալ կոդի տողը ՝ փոխարինելով «հանրային դաս MyObject» տողին: MyObject հանրային դասը իրականացնում է java.io. Serializable
Քայլ 4. Այժմ ձեր օբյեկտը սերիալիզացվելի է, ինչը նշանակում է, որ այն կարող է գրվել ելքային հոսքի միջոցով, այսպես
-
Հետևյալ կոդերի տողերը ցույց են տալիս, թե ինչպես գրել MyObject (կամ սերիալիզացվող ցանկացած օբյեկտ) ֆայլի կամ սկավառակի վրա:
փորձիր {
// Տվյալների օբյեկտի սերիալացում ֆայլին
ObjectOutputStream out = նոր ObjectOutputStream (նոր FileOutputStream («MyObject.ser»));
out.writeObject (օբյեկտ);
out.close ();
// Սերիալիզացնել տվյալների օբյեկտը բայթ զանգվածին
ByteArrayOutputStream bos = նոր ByteArrayOutputStream ();
դուրս = նոր ObjectOutputStream (bos);
out.writeObject (օբյեկտ);
out.close ();
// Ստացեք սերիականացված օբյեկտի բայթերը
բայթ buf = bos.toByteArray ();
} բռնել (IOException ե) {
}
Քայլ 5. Այն կարելի է կարդալ այսպես
-
փորձեք {FileInputStream դուռ = նոր FileInputStream ("name_of_file.sav"); ObjectInputStream ընթերցող = նոր ObjectInputStream (դուռ); MyObject x = նոր MyObject (); x = (MyObject) reader.nextObject ();} catch (IOException e) {e.printStackTrace ();}
Քայլ 6. Կատարեք սերիականացված օբյեկտի կոդը Java ծրագրի շրջանակներում `համոզվելու համար, որ այն արդյունավետ է գործում (ըստ ցանկության):
Քայլ 7. Պահպանեք և փակեք սերիականացված օբյեկտը Java- ում:
Խորհուրդներ
- Սերիալացման բարելավումները Java SE Development Kit 6-ում թույլ են տալիս օգտագործել ObjectStreamClass- ը ՝ փնտրելով ցանկացած մեթոդ, որը կարող է կարգավորել ոչ սերիականացվող դասի օբյեկտները:
- Մեծ օբյեկտների ծառերում կարդալու և գրելու ժամանակը բարելավելու համար օգտագործեք «անցողիկ» հիմնաբառ, օրինակ `փոփոխականություններ, որոնք սերիալացում չեն պահանջում: Սա կբարձրացնի կատարումը այն առումով, որ դուք այլևս չեք կարդում և գրում ավելորդ տվյալներ սերիալիզացման գործընթացում:
Գուշացումներ
- Java- ն գրեթե տարեկան կտրվածքով թողարկում է իրենց մշակողի հավաքածուի նոր տարբերակը: Նոր տարբերակները ներառում են Java- ում օբյեկտի սերիալացման եղանակի բարելավումներ և փոփոխություններ: Հետևաբար, կարևոր է վերահսկել ձեր օգտագործած տարբերակի փոփոխությունները:
- Երբ օբյեկտները սերիալացնում եք, չեք կարող ծածկագրել տվյալների հոսքերը: Հետևաբար, անհրաժեշտության դեպքում պետք է ապավինել այլ ծրագրերին կամ երկրորդային ցանցային փոխադրման գործընթացներին:
- Ներկայումս չկա տարբերակ, որը թույլ է տալիս օբյեկտներ գրել պատահական մուտքի ֆայլում: Փոխարենը, դուք կարող եք օգտագործել Byte Array մուտքի ելքային հոսքերը որպես տեղապահ, որից կարող եք կարդալ և գրել օբյեկտները: Այնուամենայնիվ, համոզվեք, որ ամբողջ օբյեկտը գտնվում է Byte զանգվածի հոսքում, հակառակ դեպքում գործընթացը ձախողվելու է: