Abdul Malik Essa نشر 28 مايو 2021 أرسل تقرير نشر 28 مايو 2021 (معدل) مثال عن ال Serialization في جافا؟ مع توضيح المفهوم تم التعديل في 28 مايو 2021 بواسطة Wael Aljamal توضيح السؤال 1 اقتباس
1 Wael Aljamal نشر 28 مايو 2021 أرسل تقرير نشر 28 مايو 2021 Serialization: التسلسل هو عملية ترجمة بنية بيانات أو حالة كائن إلى تنسيق يمكن تخزينه أو نقله وإعادة بنائه لاحقًا. في جافا يمكننا تحويل أي بنية معطيات لسلسلة من البايتات، ممت يمكننا من لإرسال البيانات ضمن قنوات الاتصال عبر الشبكة أو تخزين ونقل المعطيات، ونرسلها لحاسوب آخر ثم نقوم بعكس العملية للحصول على البيانات الأصلية. يستعمل التسلسل عادة مع الأغراض لنقل بياناتها. طريقة البرمجة، على صنف الغرض الذي نريد عمل Serialization له أن يحقق الواجهة Serializable: class Muclass implements Serializable { ... } وتضمين المكتبة: import java.io.Serializable; والمكتبتبني التاليتين مثلا في حال أردنا كتابة الغرض في ملف: import java.io.ObjectInputStream; import java.io.ObjectOutputStream; ومثال على دالة تقوم بعمل Serialization وتكتب البيانات في ملف: private static void writeObject(Serializable shoe) throws IOException { ObjectOutputStream oos = new ObjectOutputStream( new FileOutputStream(new File("obj.ser"))); oos.writeObject(shoe); oos.close(); } ولقراءة الغرض: private static Object readObject() throws IOException, ClassNotFoundException { ObjectInputStream ois = new ObjectInputStream( new FileInputStream(new File("obj.ser"))); Object obj = ois.readObject(); return obj; } مثال كامل من توثيق w3resources: w3resource.com/java-serialization. ليكن لدينا صنف عامل يحقق الواجهة:Serializable public class Employee implements java.io.Serializable { public String name; public String address; public transient int SSN; public int number; public void mailCheck() { System.out.println("Mailing a check to " + name + " " + address); } } ولدينا الصنف التالي الذي قوم باختبار عمل السلسلة للكائن من الصنف السابق: import java.io.*; public class MySerialize { public static void main(String [] args) { Employee e = new Employee(); e.name = "my name"; e.address = "syria, damascus"; e.SSN = 1; e.number = 100; try { FileOutputStream fileOut = new FileOutputStream("/serilas/employee.ser"); ObjectOutputStream out = new ObjectOutputStream(fileOut); out.writeObject(e); out.close(); fileOut.close(); System.out.printf("Serialized data is saved in serilas/employee.ser"); } catch (IOException i) { i.printStackTrace(); } } } ولإعادة البيانات من الملف نعمل De-serialize: import java.io.*; public class MyDeserialize { public static void main(String [] args) { Employee e = null; try { FileInputStream fileIn = new FileInputStream("/serilas/employee.ser"); ObjectInputStream in = new ObjectInputStream(fileIn); e = (Employee) in.readObject(); in.close(); fileIn.close(); } catch (IOException i) { i.printStackTrace(); return; } catch (ClassNotFoundException c) { System.out.println("Employee class not found"); c.printStackTrace(); return; } System.out.println("Deserialized Employee..."); System.out.println("Name: " + e.name); System.out.println("Address: " + e.address); System.out.println("SSN: " + e.SSN); System.out.println("Number: " + e.number); } } 1 اقتباس
1 Ali Haidar Ahmad نشر 28 مايو 2021 أرسل تقرير نشر 28 مايو 2021 لتحقيق ال Serialization نستخدم الكلاس ObjectOutputStream لإنشاء نسخة من الكائن الموجود في الذاكرة و وضعها في ملف . يجب القيام بالخطوات التالية : 1 - الكائن الذي تريد حفظ حالته يجب أن يكون في الأساس محققا للواجهة Serializable . ( ملاحظة الواجهة Serializable هي واجهة معرفة في الجافا ولاتحوي أي طرائق ومن اجل تحقيقها يجب كتابة تعليمة الاستيراد للصفوف import java.io.Serializable ). 2 - إنشاء ملف إمتداده ser بواسطة الكلاس FileOutputStream. 3 - تجهيز كائن من الكلاس ObjectOutputStream الذي يستخدم لكتابة حالة الكائن في الملف . 4 - نسخ حالة الكائن الموجود في الذاكرة في هذا الملف بواسطة الدالة writeObject() . 5 - عند الإنتهاء من عملية النسخ نقوم بقطع كل إتصال قمنا بإجرائه مع هذا الملف . مثال : ليكن لدينا كلاس يعبر عن طالب حقوله الاسم والرقم والمطلوب القيام ب Serialization. import java.io.Serializable; public class Student implements Serializable { String name; int id; public Student(String name,int id){ this.name=name; this.id=id; } public void printInformation(){ System.out.println("name: "+name+" id: "+id); } } الان في main سوف نعرض باقي خطوات السلسة : import java.io.FileOutputStream; import java.io.ObjectOutputStream; public class Session2 { public static void main(String[] args) { Student st=new Student("Alel",1); try { FileOutputStream fs = new FileOutputStream("teat.ser"); ObjectOutputStream os = new ObjectOutputStream(fs); os.writeObject(st); os.close(); } catch(Exception ex) { ex.printStackTrace(); } } } عند تنفيذ الخطوات السابقة ينشأ ملف بالاسم test.ser 3 اقتباس
السؤال
Abdul Malik Essa
مثال عن ال Serialization في جافا؟ مع توضيح المفهوم
تم التعديل في بواسطة Wael Aljamalتوضيح السؤال
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.