اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

تسمح آلية التسلسل Serialization في جافا من تمثيل الكائنات بشكل سلسلة من البايت (Byte) والتي تحوي بيانات هذا الكائن ومعلومات عن أنواع البيانات المخزّنة فيه دون حفظ أي بيانات خاصة بالصف (Class) لسهولة تخزينه ضمن ملفات. أما استعادة هذه البيانات من الملفات تتم بعكس هذه العملية (Deserialization) حيث يتم تحويل هذه السلسلة إلى البيانات بشكلها الطبيعي مع إضافة بيانات الصفوف التي يشتق منها هذا الكائن.

ولإجراء عملية التسلسل يتم استخدام الصفين: ObjectInputStream , ObjectOutputStream حيث يتيح كل منهما بعض التوابع لإجراء التسلسل وعكسه على الكائنات.

مثال:

import java.io.*;
public class SerializeTest {

   public static void main(String [] args) {
      Student s = new Student();
      s.name = "Anyname";
      s.address = "any address";
      s.SSN = 444;
      s.number = 11;
      
      try {
         FileOutputStream fileOut =
         new FileOutputStream("/storage/student.ser");
         ObjectOutputStream out = new ObjectOutputStream(fileOut);
         out.writeObject(e);
         out.close();
         fileOut.close();
         System.out.printf("Serialized data is saved in /tmp/student.ser");
      } catch (IOException i) {
         i.printStackTrace();
      }
   }
}

ولاستعادة البيانات (عكس التسلسل Deserialization):

import java.io.*;
public class DeserializeTest {

   public static void main(String [] args) {
      Student s = null;
      try {
         FileInputStream fileIn = new FileInputStream("/storage/student.ser");
         ObjectInputStream in = new ObjectInputStream(fileIn);
         s = (Student) in.readObject();
         in.close();
         fileIn.close();
      } catch (IOException i) {
         i.printStackTrace();
         return;
      } catch (ClassNotFoundException c) {
         System.out.println("Student class not found");
         c.printStackTrace();
         return;
      }

      //يتم الحصول على البيانات من الكائن s
      System.out.println("Deserialized Student:");
      System.out.println("Name: " + s.name);
      System.out.println("Address: " + s.address);
      System.out.println("SSN: " + s.SSN);
      System.out.println("Number: " + s.number);
   }
}

يمكنك إيجاد المزيد من المعلومات من المصادر التالية:

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...