Java ObjectInputStream

Java Objectinputstream



'Maklumat yang ditulis melalui objek ObjectOutputStream terutamanya diakses menggunakan kelas ObjectInputStream. Objektif utama kelas ObjectInputStream adalah untuk membina semula data asas dan entiti yang dihasilkan dengan menggunakan kelas ObjectOutputStream. Dengan menggunakan SocketStream, ObjectInputStream juga boleh digunakan untuk memindahkan objek merentasi hos yang berbeza. Oleh itu, kami telah memutuskan untuk menulis panduan berguna untuk sistem Ubuntu 20.04 kami untuk membuang objek kelas objectinputstream untuk membaca data daripada aliran input fail. Mari kita mulakan dengan pembukaan konsol.'

Contoh 01

Memulakan contoh pertama artikel kami, kami telah mencipta fail java baharu, 'test.java'. Selepas itu, kami juga menghasilkan fail teks dalam folder yang sama.







Untuk membaca objek aliran input dalam program java, kita perlu mengimport aliran output. Jadi, kami telah mengimport pakej 'java.io.ObjectInputStream' dan 'java.io.ObjectOutputStream' pada mulanya. Bersama-sama dengan itu, untuk memasukkan data ke dalam fail, kita perlu mengimport 'java.io.FileInputStream' dan 'java.io.FileInputStream'. Kami telah mencipta kelas 'Utama' yang memegang satu fungsi main() tunggal.



Pelaksanaan fungsi bermula daripada pengisytiharan pembolehubah integer 'd'. Untuk mengelakkan program keluar secara tiba-tiba kerana ralat, kami menambah pernyataan cuba-tangkap java. Bahagian 'cuba' bermula dengan pemulaan objek aliran output fail 'f' melalui kelas FileOutputStream. Kami telah menghantar nama fail 'new.txt' kepada objek 'f' ini. Kami telah mencipta Strim Output Objek 'o' dan menyerahkan objek fail 'f' ke kelas ObjectOutputStream untuk menjadikan fail sebagai aliran output.



Pada baris seterusnya, kami telah memanggil fungsi writeInt() aliran keluaran Java melalui objek aliran keluaran 'o' untuk menghantarnya pembolehubah integer 'd,' iaitu, untuk menyimpannya dalam fail. Pada baris 12, kami telah mencipta aliran input fail 'fs' menggunakan kelas FileInputStream java dengan menghantar fail 'new.txt,' iaitu, sudah mempunyai data di dalamnya. Objek aliran input fail ini 'fs' telah dihantar ke objek 'os' yang baru dijana kelas ObjectInputStream untuk membolehkan pembacaan daripada aliran fail. Fungsi println() daripada pakej 'System.out' java telah dibuang untuk memanggil fungsi readInt() melalui objek aliran input objek 'os' untuk memaparkan data daripada fail new.txt. Selepas itu, kami telah menutup aliran output dan aliran input menggunakan objek masing-masing 'o' dan 'os' menggunakan fungsi 'tutup' pengendalian fail dalam java. Ini adalah langkah yang perlu untuk menutup strim supaya tiada pengguna lain boleh memasukkan atau mengeluarkan data daripada fail. Dalam pernyataan catch(), kami telah menggunakan fungsi getStackTrace() untuk mendapatkan ralat dan memaparkannya pada skrin melalui pembolehubah Pengecualian 'e'. Program ini sedia untuk dilaksanakan pada shell.





Kami baru sahaja menyimpan fail kod java kami sebelum pelaksanaannya dan menggunakan arahan kata kunci java untuk melaksanakan fail 'test.java'. Ia tidak mengembalikan apa-apa sebagai balasan. Selain itu, memaparkan data fail teks 'new.txt' pada cangkerang menggunakan arahan 'kucing' memaparkan nilai sampah. Ini kerana, kebanyakan masa, pelaksana java tidak dapat membaca nilai integer daripada fail. Tetapi kemungkinan besar, ia akan memaparkan nilai integer yang tepat.



Semasa menyemak fail new.txt dengan membukanya secara manual, kami telah melihat bahawa format Unicode nilai telah ditunjukkan dalam fail.

Jika anda tidak dapat memaparkan nilai integer daripada aliran fail, anda boleh menggunakan fungsi writeObject() dalam program java dan bukannya fungsi writeInt() untuk menulis nilai 'd' ke aliran fail melalui objek 'o' seperti yang dipaparkan. Bersama-sama dengan itu, anda perlu membuang fungsi 'readObject()' dan bukannya fungsi readInt() untuk memaparkan data daripada aliran input fail.

Mengemas kini kod ini akan memaparkan nilai integer pada pelaksanaan.

Contoh 02

Mari kita mempunyai satu lagi nilai pengaturcaraan java untuk membuang aliran input objek untuk nilai jenis rentetan. Oleh itu, kami telah memulakan kod contoh ini dengan import kelas FileInputStream, FileOutputStream, ObjectInputStream dan ObjectOutputStream java yang sama daripada pakej 'io' perpustakaan java. Kelas Utama mempunyai fungsi main() untuk mula melaksanakan kod ini. Pembolehubah rentetan 'd2' dimulakan dengan nilai rentetan yang panjang.

Pernyataan cuba-tangkap yang sama telah ditolak untuk mengelakkan ralat dan untuk pelaksanaan lancar kod java ini. Objek 'f' untuk aliran output fail telah dibuat melalui kelas FileOutputStream yang mengambil 'new.txt' sebagai hujah. Objek aliran keluaran fail 'f' telah dihantar ke objek aliran keluaran 'o' yang telah dibuat dengan menggunakan kelas ObjectOutputStream. Sekarang, aliran keluaran 'o' telah memanggil fungsi writeObject() dengan menghantarnya pembolehubah rentetan 'd' untuk ditulis dalam fail 'new.txt'.

Kemudian, cipta aliran input fail 'fs' menggunakan kelas FileInputStream dengan memberikannya nama fail 'new.txt,' iaitu, untuk membaca data daripadanya. Kini, objek kelas ObjectInputStream 'os' akan menggunakan objek aliran input fail 'fs' untuk membaca data menggunakan fungsi readObject() java dalam pernyataan pelaksanaan 'println' kelas 'System.out'. Kemudian, kami cenderung untuk menutup aliran input dan output dengan memanggil fungsi 'tutup', dan pernyataan tangkapan digunakan untuk mendapatkan sebarang pengecualian yang berlaku dalam bahagian percubaan dan mengelakkan penutupan secara tiba-tiba pelaksanaan program ini.

Pelaksanaan fail kod java ini dan fail teks memaparkan nilai rentetan pada konsol.

Kesimpulan

Penggunaan kelas ObjectInputStream ialah kaedah tunggal yang tersedia untuk membaca bahan yang menggunakan protokol Serializable atau Externalizable. Sebagai kesimpulan, kami telah memasukkan semua butiran yang diperlukan untuk menggunakan kelas objectinputstream java untuk membaca data daripada aliran input objek fail. Untuk ini, kami telah menghantar dua contoh kod java yang berbeza di sini. Contoh pertama menggunakan nilai pembolehubah input jenis integer, manakala ilustrasi kedua telah membuang nilai pembolehubah rentetan, iaitu, dibaca daripada aliran fail input.