คลาส ObjectInputStream และ ObjectOutputStream เป็นคลาสย่อยของคลาส InputStream และ OutputStream ตามลำดับ อ็อบเจ็กต์ที่สร้างโดยคลาส ObjectInputStream และ ObjectOutputStream เรียกว่า object input streams และ object output streams สตรีมเอาต์พุตอ็อบเจ็กต์ใช้เมธอด writeObject(Object obj) เพื่อเขียนอ็อบเจ็กต์ obj ลงในไฟล์ และสตรีมอินพุตอ็อบเจ็กต์ใช้ readObject() เพื่ออ่านอ็อบเจ็กต์ลงในโปรแกรม
วิธีการก่อสร้างคลาส ObjectInputStream และ ObjectOutputStream มีดังนี้:
ตัวชี้ของ ObjectOutputStream ควรเป็นออบเจ็กต์สตรีมเอาต์พุต ดังนั้นเมื่อเตรียมที่จะเขียนออบเจ็กต์ลงในไฟล์ ขั้นแรกให้สร้างสตรีมเอาต์พุตโดยใช้คลาสย่อยของ OutputStream
ตัวอย่างเช่น ใช้ FileOutputStream เพื่อสร้างสตรีมเอาต์พุตไฟล์ รหัสจะเป็นดังนี้:
FileOutputStreamfileOut=newFileOutputStream(tom.txt);ObjectOutputStreamobjectout=newObjectOutputStream(fileOut);
ในทำนองเดียวกัน ตัวชี้ของ ObjectInputStream ควรเป็นออบเจ็กต์สตรีมอินพุต ดังนั้นเมื่อเตรียมอ่านออบเจ็กต์จากไฟล์ลงในโปรแกรม ขั้นแรกให้สร้างสตรีมอินพุตโดยใช้คลาสย่อยของ InputStream
ตัวอย่างเช่น ใช้ FileInputStream เพื่อสร้างสตรีมอินพุตไฟล์ รหัสจะเป็นดังนี้:
FileInputStreamfileIn=newFileInputStream(tom.txt);ObjectInputStreamobjectIn=newObjectInputStream(fileIn);
เมื่อใช้ออบเจ็กต์สตรีมเพื่อเขียนหรืออ่านออบเจ็กต์ ตรวจสอบให้แน่ใจว่าออบเจ็กต์ได้รับการซีเรียลไลซ์เพื่อให้แน่ใจว่าสามารถเขียนออบเจ็กต์ลงในไฟล์ได้และสามารถอ่านออบเจ็กต์กลับไปยังโปรแกรมได้อย่างถูกต้อง
หากคลาสใช้ อินเทอร์เฟซ Serializable (อินเทอร์เฟซในแพ็คเกจ java.io) ดังนั้นอ็อบเจ็กต์ที่สร้างโดยคลาสนี้จะเรียกว่าอ็อบเจ็กต์ซีเรียลไลซ์ อ็อบเจ็กต์ส่วนใหญ่ที่จัดทำโดยไลบรารีคลาส Java เรียกว่าซีเรียลไลซ์ ควรเน้นว่าไม่มีวิธีการใดในอินเทอร์เฟซแบบอนุกรม ดังนั้นคลาสที่ใช้อินเทอร์เฟซนี้จึงไม่จำเป็นต้องใช้วิธีการเพิ่มเติม สิ่งที่ควรทราบอีกประการหนึ่งก็คือ เมื่อใช้สตรีมอ็อบเจ็กต์เพื่อเขียนอ็อบเจ็กต์ลงในไฟล์ ไม่เพียงแต่จะต้องทำให้อ็อบเจ็กต์เป็นอนุกรมเท่านั้น แต่อ็อบเจ็กต์สมาชิกของอ็อบเจ็กต์จะต้องทำให้เป็นอนุกรมด้วย
วิธีการในอินเทอร์เฟซแบบอนุกรมจะมองไม่เห็นสำหรับโปรแกรม ดังนั้นคลาสที่ใช้อินเทอร์เฟซนี้จึงไม่จำเป็นต้องใช้วิธีการเพิ่มเติม เมื่อเขียนอ็อบเจ็กต์แบบอนุกรมไปยังเอาต์พุตสตรีมของอ็อบเจ็กต์ JVM จะใช้วิธีการในการเขียนแบบอนุกรม ข้อความในรูปแบบที่กำหนด (ข้อมูลการทำให้เป็นอนุกรมของออบเจ็กต์) ไปยังปลายทาง เมื่อสตรีมออบเจ็กต์ ObjectInputStream อ่านอ็อบเจ็กต์จากไฟล์ ข้อมูลการทำให้เป็นอนุกรมของออบเจ็กต์จะถูกอ่านกลับจากไฟล์ และออบเจ็กต์จะถูกสร้างขึ้นตามข้อมูลการทำให้เป็นอนุกรมของออบเจ็กต์
ตัวอย่างเช่น ใช้ออบเจ็กต์สตรีมเพื่ออ่านและเขียนออบเจ็กต์ที่สร้างโดยคลาส TV:
ทีวี.ชวา
importjava.io.*;publicclassTVimplementsSerializable{Stringname;intprice;publicvoidsetName(Strings){name=s;}publicvoidsetPrice(intn){price=n;}publicStringgetName(){returnname;}publicintgetPrice(){returnprice;}}
Main.java
importjava.io.*;publicclassMain{publicstaticvoidmain(Stringargs[]){TVchanghong=newTV();changhong.setName(Changhong TV);changhong.setPrice(5678);Filefile=newFile(television.txt);ลอง{FileOutputStreamfileOut=newFileOutputStream (ไฟล์);ObjectOutputStreamobjectOut=newObjectOutputStream(fileOut);objectOut.writeObject(changhong);objectOut.close();FileInputStreamfileIn=newFileInputStream(ไฟล์);ObjectInputStreamobjectIn=newObjectInputStream(fileIn);TVxinfei=(TV)objectIn.readObject();objectIn .close();xinfei.setName(Xinfei TV);xinfei.setPrice(6666);System.out.println(ชื่อฉางหง:+changhong.getName());System.out.println(ราคาของฉางหง:+ changhong.getPrice ());System.out.println(ชื่อของ xinfei:+xinfei.getName());System.out.println(ราคาของ xinfei:+xinfei.getPrice());}catch(ClassNotFoundExceptionevent){System .out.println( ไม่สามารถอ่านวัตถุ);} catch (IOExceptionevent) {System.out.println (event);}}}