Java ObjectInputStream

Java Objectinputstream



“يتم الوصول إلى المعلومات المكتوبة عبر كائن ObjectOutputStream بشكل أساسي باستخدام فئة ObjectInputStream. يتمثل الهدف الرئيسي لفئة ObjectInputStream في إعادة بناء البيانات والكيانات الأساسية التي يتم إنتاجها باستخدام فئة ObjectOutputStream. من خلال استخدام SocketStream ، يمكن أيضًا استخدام ObjectInputStream لنقل الكائنات عبر مضيفين مختلفين. لذلك ، قررنا كتابة دليل مفيد لنظام Ubuntu 20.04 الخاص بنا للتخلص من كائن فئة objectinputstream لقراءة البيانات من دفق إدخال الملف. لنبدأ بافتتاح وحدة التحكم '.

مثال 01

بدءًا من المثال الأول لمقالتنا ، قمنا بإنشاء ملف جافا جديد ، 'test.java'. بعد ذلك ، قمنا أيضًا بإنشاء ملف نصي في نفس المجلد.







لقراءة كائنات تدفق الإدخال في برنامج جافا ، نحتاج إلى استيراد تدفق الإخراج. لذلك ، قمنا باستيراد حزم 'java.io.ObjectInputStream' و 'java.io.ObjectOutputStream' في البداية. إلى جانب ذلك ، لإدخال البيانات في ملف ، نحتاج إلى استيراد 'java.io.FileInputStream' و 'java.io.FileInputStream'. لقد أنشأنا فئة 'Main' تحتوي على وظيفة main () واحدة.



يبدأ تنفيذ الوظيفة من إعلان المتغير الصحيح 'd'. لتجنب الخروج المفاجئ للبرنامج بسبب الأخطاء ، أضفنا عبارة try-catch الخاصة بجافا. يبدأ الجزء 'try' بتهيئة كائن تدفق إخراج الملف 'f' عبر فئة FileOutputStream. لقد مررنا اسم الملف 'new.txt' لهذا الكائن 'f'. لقد أنشأنا Object Output Stream 'o' وقمنا بتمرير كائن الملف 'f' إلى فئة ObjectOutputStream لجعل الملف عبارة عن دفق إخراج.



في السطر التالي ، كنا نستدعي وظيفة writeInt () لدفق إخراج Java عبر كائن تيار الإخراج 'o' لتمريره متغير عدد صحيح 'd' ، أي لحفظه في ملف. في السطر 12 ، أنشأنا تدفق إدخال الملف 'fs' باستخدام فئة FileInputStream من java عن طريق تمرير ملف 'new.txt' ، أي يحتوي بالفعل على بيانات فيه. تم تمرير كائن تدفق إدخال الملف 'fs' إلى الكائن الذي تم إنشاؤه حديثًا 'os' لفئة ObjectInputStream لتمكين القراءة من دفق الملف. تم إلغاء وظيفة println () من حزمة 'System.out' الخاصة بجافا لاستدعاء وظيفة readInt () عبر كائن دفق إدخال الكائن 'os' لعرض البيانات من ملف new.txt. بعد ذلك ، قمنا بإغلاق دفق الإخراج ودفق الإدخال باستخدام كائنيهما 'o' و 'os' باستخدام وظيفة 'الإغلاق' للتعامل مع الملفات في جافا. هذه خطوة ضرورية لإغلاق التدفقات بحيث لا يمكن لأي مستخدم آخر إدخال أو إخراج البيانات من ملف. ضمن جملة catch () ، كنا نستخدم الدالة getStackTrace () للحصول على خطأ وعرضه على الشاشة عبر متغير الاستثناء 'e'. هذا البرنامج جاهز للتنفيذ على الغلاف.





كنا قد حفظنا للتو ملف كود جافا الخاص بنا قبل تنفيذه واستخدمنا تعليمات جافا الأساسية لتنفيذ ملف “test.java”. لا تُرجع شيئًا في المقابل. أيضًا ، عرض بيانات ملف نصي 'new.txt' على الغلاف باستخدام تعليمة 'cat' يعرض قيمة غير صحيحة. هذا لأنه ، في معظم الأحيان ، لا يتمكن منفذ جافا من قراءة قيمة العدد الصحيح من الملف. ولكن على الأرجح ، سيعرض القيمة الصحيحة للعدد الصحيح.



عند فحص ملف new.txt عن طريق فتحه يدويًا ، رأينا أنه تم عرض تنسيق Unicode للقيمة في الملف.

إذا كنت غير قادر على عرض قيمة العدد الصحيح من تدفق الملفات ، فيمكنك استخدام وظيفة writeObject () في برنامج java بدلاً من وظيفة writeInt () لكتابة القيمة 'd' إلى تدفق الملف عبر الكائن 'o' كما هو معروض. إلى جانب ذلك ، تحتاج إلى التخلص من وظيفة 'readObject ()' بدلاً من وظيفة readInt () لعرض البيانات من تدفق إدخال الملف.

سيؤدي تحديث هذا الرمز إلى عرض قيمة العدد الصحيح عند التنفيذ.

المثال 02

لنحصل على قيمة أخرى لبرمجة جافا للتخلص من دفق إدخال الكائن لقيمة نوع السلسلة. وهكذا ، بدأنا هذا الكود النموذجي باستيراد نفس فئات FileInputStream و FileOutputStream و ObjectInputStream و ObjectOutputStream لجافا من الحزمة “io” لمكتبة جافا. الصنف الرئيسي له وظيفته الرئيسية () لبدء تنفيذ هذا الكود. تتم تهيئة متغير السلسلة 'd2' بقيمة سلسلة طويلة.

تم استبعاد نفس عبارة try-catch لتجنب الخطأ وللتنفيذ السلس لرمز جافا هذا. تم إنشاء الكائن 'f' لدفق إخراج الملف من خلال فئة FileOutputStream مع أخذ 'new.txt' كوسيطة. تم تمرير كائن تدفق إخراج الملف 'f' إلى كائن تيار الإخراج 'o' الذي تم إنشاؤه باستخدام فئة ObjectOutputStream. الآن ، دفق الإخراج 'o' يستدعي الوظيفة writeObject () بتمريرها متغير سلسلة 'd' ليتم كتابته في الملف 'new.txt'.

بعد ذلك ، أنشئ دفق إدخال ملف 'fs' باستخدام فئة FileInputStream بتمريره باسم ملف 'new.txt' ، أي لقراءة البيانات منه. الآن ، سيستخدم كائن فئة ObjectInputStream 'os' كائن تدفق إدخال الملف 'fs' لقراءة البيانات باستخدام وظيفة readObject () لجافا في جملة تنفيذ 'println' لفئة 'System.out'. بعد ذلك ، نميل إلى إغلاق تدفقات الإدخال والإخراج عن طريق استدعاء وظيفة 'close' ، ويتم استخدام تعليمة catch للحصول على أي استثناءات حدثت في جزء try وتجنب الإغلاق المفاجئ لتنفيذ هذا البرنامج.

عرض تنفيذ ملف كود جافا هذا والملف النصي قيمة السلسلة على وحدة التحكم.

استنتاج

استخدام فئة ObjectInputStream هي الطريقة الوحيدة المتاحة لقراءة المواد التي تستخدم بروتوكول Serializable أو Externalizable. باختصار ، لقد قمنا بتضمين جميع التفاصيل اللازمة لاستخدام فئة objectinputstream في java لقراءة البيانات من تدفق إدخال كائن الملف. لهذا ، قمنا هنا بإلقاء مثالين مختلفين لرمز جافا. يستخدم المثال الأول قيمة متغير إدخال نوع العدد الصحيح ، في حين أن الرسم التوضيحي الثاني يطرح قيمة متغير السلسلة ، أي القراءة من تدفق ملف الإدخال.