Kelas ObjectInputStream dan ObjectOutputStream masing-masing merupakan subkelas dari kelas InputStream dan OutputStream. Objek yang dibuat oleh kelas ObjectInputStream dan ObjectOutputStream disebut aliran masukan objek dan aliran keluaran objek . Aliran keluaran objek menggunakan metode writeObject(Object obj) untuk menulis objek objek ke file, dan aliran masukan objek menggunakan readObject() untuk membaca objek ke dalam program.
Metode konstruksi kelas ObjectInputStream dan ObjectOutputStream adalah sebagai berikut:
Penunjuk ObjectOutputStream harus berupa objek aliran keluaran, jadi ketika bersiap untuk menulis objek ke file, pertama-tama buat aliran keluaran menggunakan subkelas OutputStream.
Misalnya, gunakan FileOutputStream untuk membuat aliran keluaran file, kodenya adalah sebagai berikut:
FileOutputStreamfileOut=newFileOutputStream(tom.txt);ObjectOutputStreamobjectout=newObjectOutputStream(fileOut);
Demikian pula, penunjuk ObjectInputStream harus berupa objek aliran masukan, jadi ketika bersiap membaca objek dari file ke dalam program, pertama-tama buat aliran masukan menggunakan subkelas InputStream.
Misalnya menggunakan FileInputStream untuk membuat aliran input file, kodenya adalah sebagai berikut:
FileInputStreamfileIn=newFileInputStream(tom.txt);ObjectInputStreamobjectIn=newObjectInputStream(fileIn);
Saat menggunakan aliran objek untuk menulis atau membaca objek, pastikan objek tersebut diserialkan. Hal ini untuk memastikan bahwa objek dapat ditulis ke file dan objek dapat dibaca kembali ke program dengan benar.
Jika suatu kelas mengimplementasikan antarmuka Serializable (antarmuka dalam paket java.io), maka objek yang dibuat oleh kelas ini disebut objek serial. Sebagian besar objek yang disediakan oleh perpustakaan kelas Java disebut serial. Perlu ditekankan bahwa tidak ada metode dalam antarmuka Serializable, sehingga kelas yang mengimplementasikan antarmuka ini tidak perlu mengimplementasikan metode tambahan. Hal lain yang perlu diperhatikan adalah ketika menggunakan aliran objek untuk menulis suatu objek ke file, objek tersebut tidak hanya harus diserialisasi, tetapi objek anggota dari objek tersebut juga harus diserialisasi.
Metode dalam antarmuka Serializable tidak terlihat oleh program, sehingga kelas yang mengimplementasikan antarmuka ini tidak perlu mengimplementasikan metode tambahan. Ketika objek serial ditulis ke aliran keluaran objek, JVM akan mengimplementasikan metode dalam antarmuka Serializable teks dalam format tertentu (informasi serialisasi objek) ke tujuan. Ketika aliran objek ObjectInputStream membaca objek dari file, informasi serialisasi objek dibaca kembali dari file, dan objek dibuat berdasarkan informasi serialisasi objek.
Misalnya, gunakan aliran objek untuk membaca dan menulis objek yang dibuat oleh kelas TV:
TV.java
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);try{FileOutputStreamfileOut=newFileOutputStream (file);ObjectOutputStreamobjectOut=newObjectOutputStream(fileOut);objectOut.writeObject(changhong);objectOut.close();FileInputStreamfileIn=newFileInputStream(file);ObjectInputStreamobjectIn=newObjectInputStream(fileIn);TVxinfei=(TV)objectIn.readObject();objectIn .close();xinfei.setName(Xinfei TV);xinfei.setPrice(6666);System.out.println(nama Changhong:+changhong.getName());System.out.println(harga Changhong:+ changhong.getPrice ());System.out.println(nama xinfei:+xinfei.getName());System.out.println(harga xinfei:+xinfei.getPrice());}catch(ClassNotFoundExceptionevent){System .out.println( tidak dapat membaca objek);}catch(IOExceptionevent){System.out.println(event);}}}