Java ObjectInputStream

Java Objectinputstream



“Informasi yang ditulis melalui objek ObjectOutputStream terutama diakses menggunakan kelas ObjectInputStream. Tujuan utama dari kelas ObjectInputStream adalah untuk merekonstruksi data dasar dan entitas yang dihasilkan dengan menggunakan kelas ObjectOutputStream. Dengan memanfaatkan SocketStream, ObjectInputStream juga dapat digunakan untuk mentransfer objek di host yang berbeda. Oleh karena itu, kami telah memutuskan untuk menulis panduan bermanfaat untuk sistem Ubuntu 20.04 kami untuk membuang objek kelas objectinputstream untuk membaca data dari aliran input file. Mari kita mulai dengan pembukaan konsol.”

Contoh 01

Memulai contoh pertama artikel kami, kami telah membuat file java baru, 'test.java'. Setelah itu, kami juga membuat file teks di folder yang sama.







Untuk membaca objek aliran input dalam program java, kita perlu mengimpor aliran output. Jadi, kami telah mengimpor paket 'java.io.ObjectInputStream' dan 'java.io.ObjectOutputStream' di awal. Bersamaan dengan itu, untuk memasukkan data ke dalam file, kita perlu mengimpor 'java.io.FileInputStream' dan 'java.io.FileInputStream'. Kami telah membuat kelas 'Utama' yang memiliki fungsi main() tunggal.



Eksekusi fungsi dimulai dari deklarasi variabel integer “d”. Untuk menghindari keluarnya program secara tiba-tiba karena kesalahan, kami menambahkan pernyataan try-catch dari java. Bagian 'coba' dimulai dengan inisialisasi objek aliran keluaran file 'f' melalui kelas FileOutputStream. Kami telah meneruskan nama file 'new.txt' ke objek ini 'f'. Kami telah membuat Object Output Stream 'o' dan meneruskan objek file 'f' ke kelas ObjectOutputStream untuk membuat file menjadi output stream.



Pada baris berikutnya, kita telah memanggil fungsi writeInt() dari aliran output Java melalui objek aliran output “o” untuk meneruskannya ke variabel integer “d”, yaitu untuk menyimpannya dalam sebuah file. Pada baris 12, kami telah membuat aliran input file 'fs' menggunakan kelas FileInputStream dari java dengan mengirimkan file 'new.txt', yaitu, sudah memiliki data di dalamnya. Objek aliran input file 'fs' ini telah diteruskan ke objek 'os' yang baru dibuat dari kelas ObjectInputStream untuk memungkinkan membaca dari aliran file. Fungsi println() dari paket 'System.out' dari java telah dibuang untuk memanggil fungsi readInt() melalui objek aliran input objek 'os' untuk menampilkan data dari file new.txt. Setelah itu, kami telah menutup aliran output dan aliran input menggunakan objek masing-masing 'o' dan 'os' menggunakan fungsi 'tutup' penanganan file di java. Ini adalah langkah yang diperlukan untuk menutup aliran sehingga tidak ada pengguna lain yang dapat memasukkan atau mengeluarkan data dari file. Dalam pernyataan catch(), kita telah menggunakan fungsi getStackTrace() untuk mendapatkan error dan menampilkannya di layar melalui variabel Exception “e”. Program ini siap untuk dieksekusi pada shell.





Kami baru saja menyimpan file kode java kami sebelum dieksekusi dan menggunakan instruksi kata kunci java untuk mengeksekusi file “test.java”. Itu tidak mengembalikan apa pun sebagai imbalan. Juga, menampilkan data file teks 'new.txt' pada shell menggunakan instruksi 'cat' menampilkan nilai sampah. Ini karena, sebagian besar waktu, pelaksana java tidak dapat membaca nilai integer dari file. Tapi kemungkinan besar, itu akan menampilkan nilai integer yang tepat.



Saat memeriksa file new.txt dengan membukanya secara manual, kami telah melihat bahwa format nilai Unicode telah ditampilkan dalam file.

Jika Anda tidak dapat menampilkan nilai integer dari aliran file, Anda dapat menggunakan fungsi writeObject() dalam program java alih-alih fungsi writeInt() untuk menulis nilai 'd' ke aliran file melalui objek 'o' seperti yang ditampilkan. Bersamaan dengan itu, Anda perlu membuang fungsi 'readObject()' alih-alih fungsi readInt() untuk menampilkan data dari aliran input file.

Memperbarui kode ini akan menampilkan nilai integer saat dieksekusi.

Contoh 02

Mari kita memiliki nilai lain dari pemrograman java untuk membuang aliran input objek untuk nilai tipe string. Jadi, kami telah memulai kode contoh ini dengan mengimpor kelas FileInputStream, FileOutputStream, ObjectInputStream, dan ObjectOutputStream yang sama dari java dari paket 'io' dari perpustakaan java. Kelas Main memiliki fungsi main() untuk mulai mengeksekusi kode ini. Variabel string “d2” diinisialisasi dengan nilai string yang panjang.

Pernyataan try-catch yang sama telah dibuang untuk menghindari kesalahan dan untuk kelancaran eksekusi kode java ini. Objek 'f' untuk aliran keluaran file telah dibuat melalui kelas FileOutputStream dengan mengambil 'new.txt' sebagai argumen. Objek aliran output file 'f' telah diteruskan ke objek aliran output 'o' yang telah dibuat dengan menggunakan kelas ObjectOutputStream. Sekarang, aliran keluaran “o” telah memanggil fungsi writeObject() dengan melewatkan variabel string “d” untuk ditulis dalam file “new.txt”.

Kemudian, buat aliran input file “fs” menggunakan kelas FileInputStream dengan memberikannya nama file “new.txt,” yaitu, untuk membaca data darinya. Sekarang, objek kelas ObjectInputStream 'os' akan menggunakan objek aliran input file 'fs' untuk membaca data menggunakan fungsi readObject() dari java dalam pernyataan eksekusi 'println' dari kelas 'System.out'. Kemudian, kita cenderung menutup aliran input dan output dengan memanggil fungsi “close”, dan pernyataan catch digunakan untuk mendapatkan pengecualian yang terjadi di bagian try dan menghindari penutupan tiba-tiba dari eksekusi program ini.

Eksekusi file kode java dan file teks ini menampilkan nilai string di konsol.

Kesimpulan

Penggunaan kelas ObjectInputStream adalah satu-satunya metode yang tersedia untuk membaca zat yang menggunakan protokol Serializable atau Externalizable. Singkatnya, kami telah menyertakan semua detail yang diperlukan untuk memanfaatkan kelas objectinputstream java untuk membaca data dari aliran input objek file. Untuk ini, kami telah memberikan dua contoh kode Java yang berbeda di sini. Contoh pertama menggunakan nilai variabel input tipe integer, sedangkan ilustrasi kedua telah membuang nilai variabel string, yaitu, membaca dari aliran file input.