Java ObjectOutputStream (Có Ví dụ)

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về Java ObjectOutputStream và các phương thức của nó với sự trợ giúp của các ví dụ.

Các ObjectOutputStreamlớp của java.iogói có thể được sử dụng để viết các đối tượng có thể được đọc bởi ObjectInputStream.

Nó mở rộng OutputStreamlớp trừu tượng.

Hoạt động của ObjectOutputStream

Về cơ bản, ObjectOutputStreammã hóa các đối tượng Java bằng cách sử dụng tên lớp và các giá trị đối tượng. Và do đó tạo ra các luồng tương ứng. Quá trình này được gọi là tuần tự hóa.

Các luồng chuyển đổi đó có thể được lưu trữ trong các tệp và có thể được chuyển giữa các mạng.

Lưu ý : ObjectOutputStreamLớp chỉ ghi những đối tượng thực thi Serializablegiao diện. Điều này là do các đối tượng cần được tuần tự hóa trong khi ghi vào luồng

Tạo một ObjectOutputStream

Để tạo luồng đầu ra đối tượng, java.io.ObjectOutputStreamtrước tiên chúng ta phải nhập gói. Khi chúng tôi nhập gói, đây là cách chúng tôi có thể tạo luồng đầu ra.

 // Creates a FileOutputStream where objects from ObjectOutputStream are written FileOutputStream fileStream = new FileOutputStream(String file); // Creates the ObjectOutputStream ObjectOutputStream objStream = new ObjectOutputStream(fileStream); 

Trong ví dụ trên, chúng ta đã tạo một luồng xuất đối tượng có tên là objStream được liên kết với luồng xuất tệp có tên là fileStream.

Các phương thức của ObjectOutputStream

Các ObjectOutputStreamlớp học cung cấp triển khai cho các phương pháp khác nhau trình bày trong OutputStreamlớp.

viết phương pháp

  • write() - ghi một byte dữ liệu vào luồng đầu ra
  • writeBoolean() - ghi dữ liệu ở dạng boolean
  • writeChar() - ghi dữ liệu ở dạng ký tự
  • writeInt() - ghi dữ liệu ở dạng số nguyên
  • writeObject() - ghi đối tượng vào luồng đầu ra

Ví dụ 1: Java ObjectOutputStream

Hãy xem cách chúng ta có thể sử dụng ObjectOutputStreamđể lưu trữ các đối tượng trong tệp và ObjectInputStreamđọc các đối tượng đó từ tệp

 import 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 programiz"; try ( FileOutputStream file = new FileOutputStream("file.txt"); // Creates an ObjectOutputStream ObjectOutputStream output = new ObjectOutputStream(file); // writes objects to output stream output.writeInt(data1); output.writeObject(data2); // Reads data using the ObjectInputStream FileInputStream fileStream = new FileInputStream("file.txt"); ObjectInputStream objStream = new ObjectInputStream(fileStream); System.out.println("Integer data :" + objStream.readInt()); System.out.println("String data: " + objStream.readObject()); output.close(); objStream.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Đầu ra

 Dữ liệu số nguyên: 5 Dữ liệu chuỗi: Đây là chương trình 

Trong ví dụ trên, chúng ta đã sử dụng readInt()phương thức và readObject()phương thức để đọc một dữ liệu số nguyên và dữ liệu đối tượng từ các tệp.

Ở đây, chúng tôi đã sử dụng ObjectOutputStreamđể ghi dữ liệu vào tệp. Sau đó, chúng tôi đọc dữ liệu từ tệp bằng cách sử dụng ObjectInputStream.

Ví dụ 2: Java ObjectOutputStream

Hãy lấy một ví dụ khác,

 import 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) ( // Creates an object of Dog class Dog dog1 = new Dog("Tyson", "Labrador"); try ( FileOutputStream fileOut = new FileOutputStream("file.txt"); // Creates an ObjectOutputStream ObjectOutputStream objOut = new ObjectOutputStream(fileOut); // Writes objects to the output stream objOut.writeObject(dog1); // Reads the object FileInputStream fileIn = new FileInputStream("file.txt"); ObjectInputStream objIn = new ObjectInputStream(fileIn); // Reads the objects Dog newDog = (Dog) objIn.readObject(); System.out.println("Dog Name: " + newDog.name); System.out.println("Dog Breed: " + newDog.breed); objOut.close(); objIn.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Đầu ra

 Tên chó: Tyson Chó giống: Labrador 

Trong ví dụ trên, chúng tôi đã tạo

  • ObjectOutputStreamđược đặt tên objOut bằng cách sử dụng FileOutputStreamtệp được đặt tên
  • ObjectInputStreamđược đặt tên là objIn bằng cách sử dụng FileInputStreamtệp tin được đặt tên.
  • Một đối tượng dog1 của lớp Dog.

Ở đây, chúng ta đã sử dụng luồng xuất đối tượng để ghi đối tượng vào tệp. Và, luồng đầu vào đối tượng để đọc đối tượng từ tệp.

Lưu ý : Lớp Dog thực hiện Serializablegiao diện. Đó là bởi vì các ObjectOutputStreamđối tượng ghi duy nhất có thể được tuần tự hóa đến luồng đầu ra.

Các phương thức khác của ObjectOutputStream

Phương pháp Mô tả
flush() xóa tất cả dữ liệu khỏi luồng đầu ra
drain() đặt tất cả dữ liệu được lưu trong bộ đệm vào luồng đầu ra
close() đóng luồng đầu ra

Để tìm hiểu thêm, hãy truy cập Java ObjectOutputStream (tài liệu Java chính thức).

thú vị bài viết...