English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تعليميات Java الأساسية

Java التحكم في العملية

Java Arrays

Java توجيهية الأحداث (I)

Java توجيهية الأحداث (II)

Java توجيهية الأحداث (III)

معالجة الاستثناءات في Java

Java List

Java Queue (الطابور)

مجموعات Java Map

مجموعات Java Set

Java إدخال/إخراج (I/O)

Java Reader/Writer

مواضيع أخرى Java

فئة Java ObjectInputStream

في هذا الدرس، سنتعلم باستخدام مثال Java ObjectOutputStream及其 طرق.

يمكن استخدام فئة ObjectInputStream في حزمة java.io لقراءة العناصر التي كتبها ObjectOutputStream.

أنه قام بتفريغ كائن InputStream.

قبل دراسة فئة ObjectInputStream، تأكد من أنك تفهمفئة ObjectOutputStream.

مبدأ عمل ObjectInputStream

يُستخدم ObjectInputStream بشكل رئيسي لقراءة البيانات التي كتبها ObjectOutputStream.

بشكل عام، يقوم ObjectOutputStream بتحويل جافا إلى تيار الموضوعي. هذا يُسمى بسلسلة. يمكن تخزين هذه التيارات في ملفات، أو يمكن نقلها عبر الشبكة.

الآن، إذا كنت بحاجة إلى قراءة هذه العناصر، فستستخدم ObjectInputStream، الذي سيقوم بتحويل التيار إلى العناصر الم相应ة. هذا يُسمى بعملية تفريغ السلسلة.

إنشاء ObjectInputStream

لإنشاء تيار الإدخال الموضوعي، يجب علينا أولاً استيراد حزمة java.io.ObjectInputStream. بعد استيراد الحزمة، يمكننا إنشاء تيار الإدخال.

//إنشاء تيار الإدخال الموضوعي المرتبط بملف معين
FileInputStream fileStream = new FileInputStream(String file);
//استخدام تيار الإدخال لم 创建 تيار الإدخال الموضوعي
ObjectInputStream objStream = new ObjectInputStream(fileStream);

في المثال السابق، قمنا بإنشاء مجسم تدفق الدخول للمجسم يسمى objStream، ويرتبط هذا التدفق الدخلي بتدفق الدخول للملف يسمى fileStream.

الآن، يمكن استخدام objStream لقراءة الأجسام من الملف.

طرق فئة ObjectInputStream

فئة ObjectInputStream تقدم تنفيذًا لطرق موجودة في فئة InputStream.

طريقة read()

  • read() - قراءة بايت واحد من التدفق الإدخالي

  • readBoolean() - قراءة البيانات بصيغة صحيح/خطأ

  • readChar() - قراءة البيانات بصيغة حرف

  • readInt() - قراءة البيانات بصيغة عدد صحيح

  • readObject() - قراءة الجسم من التدفق الإدخالي

مثال 1: Java ObjectInputStream

دعونا نرى كيف يمكننا استخدام فئة ObjectInputStream لقراءة الأجسام المقدمة من فئة ObjectOutputStream.

إدخال java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
class Main {
    public static void main(String[] args) {
        int data1 = 5;
        String data2 = "This is w3codebox";
        try {
            FileOutputStream file = new FileOutputStream("file.txt");
            ObjectOutputStream output = new ObjectOutputStream(file);
            //استخدام ObjectOutputStream لكتابة الملف
            output.writeInt(data1);
            output.writeObject(data2);
            FileInputStream fileStream = new FileInputStream("file.txt");
            //إنشاء تدفق الدخول للمجسم
            ObjectInputStream objStream = new ObjectInputStream(fileStream);
            //استخدام طريقة readInt()
            System.out.println("بيانات الأعداد الصحيحة: " + objStream.readInt());
            //استخدام طريقة readObject()
            System.out.println("بيانات النص: " + objStream.readObject());
            output.close();
            objStream.close();
        }
        catch (Exception e) {
            e.getStackTrace();
        }
    }
}

نتيجة الخروج

بيانات الأعداد الصحيحة: 5
بيانات النص: This is w3codebox

في المثال السابق، استخدمنا طرق readInt() و readObject() لقراءة بيانات الأعداد الصحيحة والبيانات المقدمة من الملف.

في هذا المثال، استخدمنا ObjectOutputStream لكتابة البيانات إلى الملف. ثم، استخدمنا ObjectInputStream لقراءة البيانات من الملف.

مثال 2: Java ObjectInputStream

دعونا نرى مثالاً عملياً آخر،

إدخال java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
class Dog implements Serializable {
    String name;
    String breed;
    public Dog(String name, String breed) {
        this.name = name;
        this.breed = breed;
    }
}
class Main {
    public static void main(String[] args) {
        //إنشاء كائن من فئة Dog
        Dog dog = new Dog("Tyson", "Labrador");
        try {
            FileOutputStream file = new FileOutputStream("file.txt");
            //إنشاء ObjectOutputStream
            ObjectOutputStream output = new ObjectOutputStream(file);
            //كتابة الكائن إلى تدفق الخروج
            output.writeObject(dog);
            FileInputStream fileStream = new FileInputStream("file.txt");
            //إنشاء ObjectInputStream
            ObjectInputStream input = new ObjectInputStream(fileStream);
            //قراءة الكائن
            Dog newDog = (Dog) input.readObject();
            System.out.println("اسم الكلاب: " + newDog.name);
            System.out.println("نوع الكلاب: " + newDog.breed);
            output.close();
            input.close();
        }
        catch (Exception e) {
            e.getStackTrace();
        }
    }
}

نتيجة الخروج

اسم الكلاب: Tyson
نوع الكلاب: Labrador

في المثال السابق، قمنا بإنشاء

  •  ObjectOutputStream uses the named FileOutputStream file as output

  •  ObjectInputStream uses the named FileInputStream fileStream as input

  • Object of Dog class dog

Here, we then use the object output stream to write objects to the file. And, the object input stream reads objects from the file.

Noteالنص: Dog فئة تحقق من واجهة Serializable. هذا لأن ObjectOutputStream يكتب فقط الأجسام القابلة للتوثيق إلى تدفق الخروج.

Other methods of ObjectInputStream

MethodContent Description
available()Return the number of available bytes in the input stream
mark()Mark the position of the read data in the input stream
reset()Return the control to the point in the input stream where the mark was set
skipBytes()Skip and discard the specified bytes from the input stream
close()Close the object input stream