جاوا آبجیکٹ ان پٹ اسٹریم

Jawa Abjyk An P As Rym

'ObjectOutputStream کے آبجیکٹ کے ذریعے لکھی گئی معلومات کو بنیادی طور پر ObjectInputStream کلاس کے ذریعے حاصل کیا جاتا ہے۔ ObjectInputStream کلاس کا بنیادی مقصد بنیادی ڈیٹا اور اداروں کی تشکیل نو کرنا ہو گا جو ObjectOutputStream کلاس کو ملازمت دے کر تیار کیے جاتے ہیں۔ SocketStream کا استعمال کرتے ہوئے، ObjectInputStream کو مختلف میزبانوں میں اشیاء کی منتقلی کے لیے بھی استعمال کیا جا سکتا ہے۔ لہذا، ہم نے اپنے Ubuntu 20.04 سسٹم کے لیے ایک مددگار گائیڈ لکھنے کا فیصلہ کیا ہے تاکہ فائل ان پٹ اسٹریم سے ڈیٹا پڑھنے کے لیے آبجیکٹ ان پٹ اسٹریم کلاس آبجیکٹ کو کاسٹ کیا جاسکے۔ آئیے ایک کنسول کھولنے کے ساتھ شروع کریں۔'

مثال 01

اپنے مضمون کی پہلی مثال شروع کرتے ہوئے، ہم ایک نئی جاوا فائل بنا رہے ہیں، 'test.java'۔ اس کے بعد، ہم نے اسی فولڈر میں ایک ٹیکسٹ فائل بھی بنائی۔



جاوا پروگرام میں ان پٹ اسٹریم کی اشیاء کو پڑھنے کے لیے، ہمیں آؤٹ پٹ اسٹریم درآمد کرنے کی ضرورت ہے۔ لہذا، ہم شروع میں 'java.io.ObjectInputStream' اور 'java.io.ObjectOutputStream' پیکجز درآمد کرتے رہے ہیں۔ اس کے ساتھ، ڈیٹا کو فائل میں داخل کرنے کے لیے، ہمیں 'java.io.FileInputStream' اور 'java.io.FileInputStream' درآمد کرنے کی ضرورت ہے۔ ہم نے ایک کلاس 'مین' بنائی ہے جس میں ایک ہی مین () فنکشن ہے۔



فنکشن کا عمل ایک عدد متغیر 'd' کے اعلان سے شروع ہوتا ہے۔ غلطیوں کی وجہ سے پروگرام کے اچانک اخراج سے بچنے کے لیے، ہم نے جاوا کا ٹرائی کیچ اسٹیٹمنٹ شامل کیا۔ 'کوشش' کا حصہ فائل آؤٹ پٹ اسٹریم کلاس کے ذریعے فائل آؤٹ پٹ اسٹریم آبجیکٹ 'f' کی شروعات کے ساتھ شروع ہوتا ہے۔ ہم نے اس آبجیکٹ 'f' پر فائل کا نام 'new.txt' پاس کر دیا ہے۔ ہم نے ایک آبجیکٹ آؤٹ پٹ اسٹریم 'o' بنائی ہے اور فائل کو آؤٹ پٹ اسٹریم بنانے کے لیے آبجیکٹ آؤٹ پٹ اسٹریم کلاس میں فائل آبجیکٹ 'f' کو پاس کیا ہے۔



اگلی ہی لائن میں، ہم جاوا آؤٹ پٹ سٹریم کے رائٹ انٹ() فنکشن کو آؤٹ پٹ سٹریم آبجیکٹ 'o' کے ذریعے کال کر رہے ہیں تاکہ اسے ایک انٹیجر ویری ایبل 'd' پاس کر سکیں، یعنی اسے فائل میں محفوظ کریں۔ لائن 12 پر، ہم نے فائل ان پٹ اسٹریم 'fs' کو جاوا کی FileInputStream کلاس کا استعمال کرتے ہوئے اسے 'new.txt' فائل پاس کرکے بنایا ہے، یعنی اس میں پہلے سے ڈیٹا موجود ہے۔ یہ فائل ان پٹ اسٹریم آبجیکٹ 'fs' کو ObjectInputStream کلاس کے نئے تیار کردہ آبجیکٹ 'os' میں منتقل کیا گیا ہے تاکہ فائل اسٹریم سے پڑھنے کو قابل بنایا جاسکے۔ جاوا کے 'System.out' پیکیج سے println() فنکشن کاسٹ آف کر دیا گیا ہے تاکہ readInt() فنکشن کو آبجیکٹ ان پٹ سٹریم آبجیکٹ 'os' کے ذریعے کال کیا جا سکے تاکہ new.txt فائل سے ڈیٹا ڈسپلے کیا جا سکے۔ اس کے بعد، ہم آؤٹ پٹ اسٹریم اور ان پٹ اسٹریم کو ان کے متعلقہ آبجیکٹ 'o' اور 'os' کا استعمال کرتے ہوئے جاوا میں فائل ہینڈلنگ کے 'close' فنکشن کا استعمال کرتے ہوئے بند کر رہے ہیں۔ یہ سلسلہ بند کرنے کے لیے ایک ضروری قدم ہے تاکہ کوئی دوسرا صارف فائل سے ڈیٹا ان پٹ یا آؤٹ پٹ نہ کر سکے۔ catch() اسٹیٹمنٹ کے اندر، ہم getStackTrace() فنکشن کا استعمال کرتے ہوئے ایک ایرر حاصل کرتے ہیں اور اسے Exception variable 'e' کے ذریعے اسکرین پر ڈسپلے کرتے ہیں۔ یہ پروگرام شیل پر عملدرآمد کے لیے تیار ہے۔

ہم نے اپنی جاوا کوڈ فائل کو اس کے نفاذ سے پہلے ہی محفوظ کیا تھا اور 'test.java' فائل کو چلانے کے لیے جاوا کی ورڈ انسٹرکشن کا استعمال کیا۔ یہ بدلے میں کچھ نہیں دیتا۔ اس کے علاوہ، 'کیٹ' ہدایات کا استعمال کرتے ہوئے شیل پر ٹیکسٹ فائل 'new.txt' کے ڈیٹا کو ظاہر کرنے سے ردی کی قیمت ظاہر ہوتی ہے۔ اس کی وجہ یہ ہے کہ، زیادہ تر وقت، java executor فائل سے انٹیجر ویلیو کو پڑھنے سے قاصر ہوتا ہے۔ لیکن غالباً، یہ صحیح عددی قدر ظاہر کرے گا۔



new.txt فائل کو دستی طور پر کھول کر چیک کرنے پر، ہم نے دیکھا کہ فائل میں ویلیو کا یونیکوڈ فارمیٹ دکھایا گیا ہے۔

اگر آپ فائل اسٹریم سے انٹیجر ویلیو ظاہر کرنے سے قاصر ہیں، تو آپ جاوا پروگرام میں writeObject() فنکشن کو writeInt() فنکشن کے بجائے فائل اسٹریم میں 'o' کے ذریعے ویلیو 'd' لکھنے کے لیے استعمال کر سکتے ہیں۔ جیسا کہ دکھایا گیا ہے۔ اس کے ساتھ، آپ کو فائل ان پٹ اسٹریم سے ڈیٹا ظاہر کرنے کے لیے readInt() فنکشن کے بجائے 'readObject()' فنکشن کو کاسٹ کرنے کی ضرورت ہے۔

اس کوڈ کو اپ ڈیٹ کرنے سے عمل درآمد پر عددی قدر ظاہر ہوگی۔

مثال 02

آئیے سٹرنگ ٹائپ ویلیو کے لیے آبجیکٹ ان پٹ سٹریم کو کاسٹ کرنے کے لیے جاوا پروگرامنگ کی ایک اور قدر رکھتے ہیں۔ اس طرح، ہم نے اس مثالی کوڈ کو جاوا لائبریری کے 'io' پیکیج سے جاوا کی اسی FileInputStream، FileOutputStream، ObjectInputStream، اور ObjectOutputStream کلاسوں کی درآمد کے ساتھ شروع کیا ہے۔ اس کوڈ پر عمل درآمد شروع کرنے کے لیے Main کلاس کا اپنا main() فنکشن ہے۔ ایک سٹرنگ متغیر 'd2' کو لمبی سٹرنگ ویلیو کے ساتھ شروع کیا جاتا ہے۔

غلطی سے بچنے اور اس جاوا کوڈ کی آسانی سے عمل درآمد کے لیے اسی ٹرائی کیچ اسٹیٹمنٹ کو کاسٹ آف کر دیا گیا ہے۔ فائل آؤٹ پٹ اسٹریم کے لیے آبجیکٹ 'f' کو FileOutputStream کلاس کے ذریعے 'new.txt' کو بطور دلیل بنایا گیا ہے۔ فائل آؤٹ پٹ اسٹریم آبجیکٹ 'f' کو آؤٹ پٹ اسٹریم آبجیکٹ 'o' میں منتقل کیا گیا ہے جو ObjectOutputStream کلاس کے استعمال سے بنایا گیا ہے۔ اب، آؤٹ پٹ سٹریم 'o' رائٹ آبجیکٹ() فنکشن کو کال کر رہا ہے اور اسے 'new.txt' فائل میں لکھنے کے لیے سٹرنگ ویری ایبل 'd' پاس کر رہا ہے۔

پھر، فائل ان پٹ اسٹریم کلاس کا استعمال کرتے ہوئے ایک فائل ان پٹ اسٹریم 'fs' بنائی جس کو فائل کا نام 'new.txt' پاس کرکے، یعنی اس سے ڈیٹا پڑھنے کے لیے۔ اب، ObjectInputStream کلاس آبجیکٹ 'os' فائل ان پٹ اسٹریم آبجیکٹ 'fs' کو 'System.out' کلاس کے 'println' ایگزیکیوشن اسٹیٹمنٹ میں جاوا کے readObject() فنکشن کا استعمال کرتے ہوئے ڈیٹا کو پڑھنے کے لیے استعمال کرے گا۔ اس کے بعد، ہم 'کلوز' فنکشن کو کال کرکے ان پٹ اور آؤٹ پٹ اسٹریمز کو بند کرنے کا رجحان رکھتے ہیں، اور کیچ اسٹیٹمنٹ کا استعمال کوشش کے حصے میں ہونے والے کسی بھی استثناء کو حاصل کرنے اور اس پروگرام پر عمل درآمد کے اچانک بند ہونے سے بچنے کے لیے کیا جاتا ہے۔

اس جاوا کوڈ فائل اور ٹیکسٹ فائل کے نفاذ نے کنسول پر سٹرنگ ویلیو کو ظاہر کیا۔

نتیجہ

آبجیکٹ ان پٹ اسٹریم کلاس کا استعمال ان مادوں کو پڑھنے کے لیے دستیاب واحد طریقہ ہے جو سیریلائز ایبل یا ایکسٹرنلائز ایبل پروٹوکول استعمال کرتے ہیں۔ خلاصہ یہ کہ ہم نے فائل آبجیکٹ ان پٹ اسٹریم سے ڈیٹا پڑھنے کے لیے جاوا کے آبجیکٹ ان پٹ اسٹریم کلاس کو استعمال کرنے کے لیے تمام ضروری تفصیلات شامل کی ہیں۔ اس کے لیے، ہم یہاں دو مختلف جاوا کوڈ کی مثالیں دے رہے ہیں۔ پہلی مثال میں عددی قسم کی ان پٹ متغیر ویلیو کا استعمال کیا گیا ہے، جب کہ دوسری مثال سٹرنگ متغیر کی قدر کو ختم کر رہی ہے، یعنی ان پٹ فائل اسٹریم سے پڑھی گئی ہے۔