December 30, 2016

About Java IO

Java အကြောင်းကိုလေ့လာမယ်ဆိုရင် Java Programming ရေးသားပုံရေးသားနည်းတွေ စည်းကမ်းတွေ၊ ပြီးတော OOP ဆိုတဲ့ Conceptတွေ၊ Version အလိုက် အသစ်ပါဝင်တဲ့ Features တွေ အပြင် အသုံးများတဲ့ API တွေကို လေ့လာဖို့လိုအပ်ပါတယ်။ Java IO ဆိုတာကလဲ Java Programming ကို လေ့လာရာမှာ မရှိမဖြစ်လိုအပ်တဲ့ Essential API တစ်ခုဖြစ်ပါတယ်။

ကိုယ့် Blog ကို ကိုယ်ပြန်ကြည့်တဲ့အခါမှာ IO အကြောင်း ရေးမထားပဲ NIO2 ကိုတော့ ရေးထားတယ်။ ဒါ့ကြောင့် IO ကို ပြန်ရေးပါမယ်။ IO ကို နားလည်ပြီးမှ NIO2 ကို လုပ်တာကောင်းပါတယ်။ ဒါ့ကြောင့် Java IO ကို ပြန်ပြီး ရေးပါမယ်။

API ဆိုတာ ကျွန်တော်တို့ အစဉ်သင့် အသုံးပြုနိုင်အောင် ကြိုတင်ရေးသားထားတဲ့ Class Library တွေသာ ဖြစ်ကြတယ်။ ဒါ့ကြောင့် API ကို လေ့လာမယ်ဆီုရင် အဓိက ဘာတွေကို ပံ့ပိုးပေးမှာလဲ၊ အခြေခံသိထားသင့်တဲ့ Interface တွေက ဘာတွေလဲ၊ ပြီးတော့ အသေးစိတ်ဘယ်လိုလုပ်ကြမလဲ​ဆိုတာကို လေ့လာတာက အလွယ်တကူအသုံးပြုနိုင်မှာ ဖြစ်ပါတယ်။

နောက်ကွယ်က ဘာတွေ ဖြစ်နေတယ် ဘာတွေလုပ်နေတယ်ဆိုတာကို သိစရာ မလိုပါဘူး။ ဘာလို့လဲဆိုတော့ ကားမောင်းချင်ရင် ကားကို ဘယ်လို မောင်းရတယ်သိရင်ရပြီ မဟုတ်လား။ ကားမောင်းနေတဲ့အချိန်မှာ နောက်ကွယ်မှာ အင်ဂျင်ထဲမှာ တစ်ဆင့်ချင်း ဘယ်လို လုပ်သွားတယ်ဆိုတာ ကားမောင်းသူအတွက် သိဖို့လိုအပ်လို့လား။

တစ်ချို့ကပြောမယ်။ API တွေကို သိချင်ရင် နောက်ကွယ်က သီအိုရီတွေကို သိထားသင့်တယ်တဲ့။ ဒါပေမဲ့ ကားမောင်းဖို့အတွက် ကားအင်ဂျင်ထဲမှာ ဘယ်လိုလုပ်တယ်ဆိုတာကို လေ့လာနေသလိုပဲ။ တော်ရုံနဲ့ ကားမောင်းနိုင်မှာ မဟုတ်ဘူး။ ပြီးတော့ အဲ့ဒီအင်ဂျင်ကို သိတဲ့အချိန်မှာ အာကီတက်ချာ မတူတဲ့ အင်ဂျင်တွေ ထွက်နေလောက်ပြီ။

Encapsulation ကို ကောင်းကောင်းနားလည်ရင် ဒီလိုအလုပ်တွေလုပ်မှာ မဟုတ်ပါဘူး။


What is Java I/O?


Java IO ဆိုတာဟာ Java Program ထဲကနေ Inputs Outputs တွေကို လုပ်နိုင်အောင် ကြိုရေးပေးထားတဲ့ API ပဲ ဖြစ်တယ်။ ဒါဆိုရင် IO ကို သိအောင် ဘာတွေလေ့လာထားဖို့လိုမှာလဲ။ File System ကိုနာလည်ထာဖို့တော့ လိုပါလိမ့်မယ်။ ပြီးမှ API ကို သုံးပြီး Input Output ကို ဘယ်လိုလုပ်မယ်ဆိုတာရယ် ဘယ်လို အရာမျိုးတွေကို Input လုပ်လို့ရမယ်ဆိုတာရယ်၊ အသုံးပြုနိုင်တဲ့ Interface Object တွေကို သိရှိထားရပါမယ်။

Java SE ရဲ့ java.io package ရဲ့ အောက်မှာ IO အတွက် API Class တွေ Interfaces တွေကို စုစည်းထားပါတယ်။ ကျွန်တော်တို့ Java IO အခန်းနဲ့ အောက်ပါ အကြောင်းအရာများကို လေ့လာသွားပါမယ်။


File Object


File System ထဲမှာ ရှိတဲ့ File တွေ Directory တွေရဲ့ Path Name တွေကို ကိုယ်စားပြုရန်အတွက် java.io.File Class ကို ပြင်ဆင်ထားပါတယ်။ File Object ကနေ File Directory တို့ရဲ့ Properties တွေကို သိရှိနိုင်သလို၊ File Directory တွေကို တည်ဆောက်နိုင်ပါတယ်။ တဖန် Directory ထဲမှာရှိတဲ့ File တွေကို ရှာဖွေတာတွေ၊ File တွေကို နာမည်ပြောင်းတာတွေ၊ တနေရာက တနေရာကို ပြောင်ရွှေ့တာတွေ၊ ပြီးတော့ ဖျက်ပစ်တာတွေ လုပ်နိုင်ပါတယ်။


I/O Streams


File ထဲမှာရှိတဲ့ Data တွေကို Read / Write လုပ်ဖို့အတွက်ပြင်ဆင်ထားတဲ့ Object တွေဖြစ်ပါတယ်။ Read / Write လုပ်မည့် Data Type အလိုက် အသုံးပြုရမည့် I/O Stream အမျိုးအစားတွေဟာ မတူညီပါဘူး။ ဘယ်လို Data အမျိုးအစားဆိုရင် ဘယ် Stream ကို သုံးမလဲ ဆိုတာတွေကို အသေအချာ ခွဲခြားသိနေဖို့လိုအပ်ပါတယ်။ နမူနာတွေနဲ့ I/O Stream တွေကို သဘောပေါက်အောင် လေ့လာသွားကြပါမယ်။


Serialization & Deserialization


JVM ရဲ့ Memory ပေါ်မှာရှိတဲ့ Object တွေကို တခြားတနေရာရာမှာ သွားပြီး သိမ်းတာကို Serialize လုပ်တယ်လို့ခေါ်ပါတယ်။ Object တွေကို File မှာ သွားသိမ်းမယ်။ ဒါမှမဟုတ် Internet ကနေ တစ်ခြားတစ်နေရာရာကို သွားပို့ပြီး သိမ်းထားမယ်။ ဒါမှမဟုတ် Session ပေါ်ကိုဖြတ်ပြီး မတူညီတဲ့ နေရာတွေမှာ Share လုပ်ပြီးသုံးမယ်။ ဒီလိုအခါမျိုးတွေမှာ Object တွေကို Serialize လုပ်ဖို့လိုအပ်ပါမယ်။ ဒီအခန်းမှာတော့ Object တွေကို Serialize လုပ်တယ်ဆိုတာဘယ်လိုဟာမျိုးလဲ။ ပြီးတော့ Serialzie လုပ်ဖို့ဘာလိုအပ်မလဲ။ ဘယ်လိုမျိုး Serialize လုပ်မလဲဆိုတာတွေကို လေ့လာပါမယ်။

တဖန် Serialized လုပ်ထားတဲ့ Object တွေကို JVM ရဲ့ Memory ပေါ်ကို ပြန်ပြီး ခေါ်ယူ အသုံးပြုတာကို Deserialize လုပ်တယ်လို့ခေါ်ပြီး Deserialize လုပ်တာကို ဘယ်လို လုပ်တာလဲ။ ပြီးတော့ သတိထားစရာ ဘာတွေရှိလဲဆိုတာကို လေ့လာသွားပါမယ်။

နောက်အခန်းတွေဖြင့် အထက်ပါ အကြောင်းအရာများကို ဆက်လက် ရေးသားသွားပါမယ်။

ဆက်ပါဦးမယ်
မင်းလွင်

No comments:

Post a Comment