Java ObjectInputStream

Java Objectinputstream



“Thông tin được viết thông qua đối tượng của một ObjectOutputStream chủ yếu được truy cập bằng cách sử dụng lớp ObjectInputStream. Mục tiêu chính của lớp ObjectInputStream sẽ là tái tạo lại dữ liệu cơ bản và các thực thể được tạo ra bằng cách sử dụng lớp ObjectOutputStream. Bằng cách sử dụng SocketStream, ObjectInputStream cũng có thể được sử dụng để chuyển các đối tượng qua các máy chủ khác nhau. Do đó, chúng tôi đã quyết định viết một hướng dẫn hữu ích cho hệ thống Ubuntu 20.04 của chúng tôi để loại bỏ đối tượng lớp objectinputstream để đọc dữ liệu từ luồng đầu vào tệp. Hãy bắt đầu với việc mở một bảng điều khiển. ”

Ví dụ 01

Bắt đầu ví dụ đầu tiên của bài viết, chúng tôi đã tạo một tệp java mới, “test.java”. Sau đó, chúng tôi cũng tạo một tệp văn bản trong cùng một thư mục.







Để đọc các đối tượng của luồng đầu vào trong chương trình java, chúng ta cần nhập luồng đầu ra. Vì vậy, chúng tôi đã nhập các gói “java.io.ObjectInputStream” và “java.io.ObjectOutputStream” ngay từ đầu. Cùng với đó, để chèn dữ liệu vào tệp, chúng ta cần nhập “java.io.FileInputStream” và “java.io.FileInputStream”. Chúng ta đã tạo một lớp “Main” chứa một hàm main () duy nhất.



Việc thực thi hàm bắt đầu từ việc khai báo một biến số nguyên “d”. Để tránh chương trình bị thoát đột ngột do lỗi, chúng tôi đã thêm câu lệnh try-catch của java. Phần “thử” bắt đầu với việc khởi tạo đối tượng luồng đầu ra tệp “f” thông qua lớp FileOutputStream. Chúng tôi đã chuyển tên tệp “new.txt” cho đối tượng này “f”. Chúng tôi đã tạo một Luồng đầu ra đối tượng “o” và chuyển đối tượng tệp “f” vào lớp ObjectOutputStream để biến tệp thành luồng đầu ra.



Ở dòng tiếp theo, chúng tôi đã gọi hàm writeInt () của luồng đầu ra Java thông qua đối tượng luồng đầu ra “o” để chuyển cho nó một biến số nguyên “d” để lưu nó vào một tệp. Ở dòng 12, chúng tôi đã tạo luồng đầu vào tệp “fs” bằng cách sử dụng lớp FileInputStream của java bằng cách chuyển cho nó một tệp “new.txt”, tức là đã có dữ liệu trong đó. Đối tượng luồng đầu vào tệp này “fs” đã được chuyển cho đối tượng mới được tạo “os” của lớp ObjectInputStream để cho phép đọc từ luồng tệp. Hàm println () từ gói “System.out” của java đã bị loại bỏ để gọi hàm readInt () thông qua đối tượng luồng đầu vào đối tượng “os” để hiển thị dữ liệu từ tệp new.txt. Sau đó, chúng tôi đã đóng luồng đầu ra và luồng đầu vào bằng cách sử dụng các đối tượng tương ứng “o” và “os” của chúng bằng cách sử dụng chức năng “đóng” của việc xử lý tệp trong java. Đây là bước cần thiết để đóng các luồng để không người dùng nào khác có thể nhập hoặc xuất dữ liệu từ tệp. Trong câu lệnh catch (), chúng tôi đã sử dụng hàm getStackTrace () để nhận lỗi và hiển thị lỗi đó trên màn hình thông qua biến Exception “e”. Chương trình này đã sẵn sàng để thực thi trên shell.





Chúng tôi vừa lưu tệp mã java của mình trước khi thực thi và sử dụng hướng dẫn từ khóa java để thực thi tệp “test.java”. Nó không trả lại gì để đáp lại. Ngoài ra, hiển thị dữ liệu của tệp văn bản “new.txt” trên shell bằng lệnh “cat” sẽ hiển thị một giá trị rác. Điều này là do, hầu hết thời gian, trình thực thi java không thể đọc giá trị số nguyên từ tệp. Nhưng hầu hết có thể, nó sẽ hiển thị giá trị số nguyên chính xác.



Khi kiểm tra tệp new.txt bằng cách mở thủ công, chúng tôi đã thấy rằng định dạng Unicode của giá trị đã được hiển thị trong tệp.

Nếu bạn không thể hiển thị giá trị số nguyên từ luồng tệp, bạn có thể sử dụng hàm writeObject () trong chương trình java thay vì hàm writeInt () để ghi giá trị “d” vào luồng tệp thông qua đối tượng “o” Như được hiển thị. Cùng với đó, bạn cần loại bỏ hàm “readObject ()” thay vì hàm readInt () để hiển thị dữ liệu từ luồng đầu vào tệp.

Cập nhật mã này sẽ hiển thị giá trị số nguyên khi thực thi.

Ví dụ 02

Hãy có một giá trị khác của lập trình java để loại bỏ luồng đầu vào đối tượng cho giá trị kiểu chuỗi. Do đó, chúng ta đã bắt đầu mã ví dụ này với việc nhập cùng một lớp FileInputStream, FileOutputStream, ObjectInputStream và ObjectOutputStream của java từ gói “io” của thư viện java. Lớp Main có hàm main () để bắt đầu thực thi đoạn mã này. Biến chuỗi “d2” được khởi tạo với giá trị chuỗi dài.

Cùng một câu lệnh try-catch đã được thực hiện để tránh lỗi và để thực thi trơn tru mã java này. Đối tượng “f” cho luồng xuất tệp đã được tạo thông qua lớp FileOutputStream lấy “new.txt” làm đối số. Đối tượng luồng đầu ra tệp “f” đã được chuyển cho đối tượng luồng đầu ra “o” đã được tạo bằng cách sử dụng lớp ObjectOutputStream. Bây giờ, luồng đầu ra “o” đã gọi hàm writeObject () bằng cách chuyển cho nó một biến chuỗi “d” được ghi trong tệp “new.txt”.

Sau đó, tạo luồng đầu vào tệp “fs” bằng cách sử dụng lớp FileInputStream bằng cách chuyển cho nó một tên tệp “new.txt”, tức là, để đọc dữ liệu từ nó. Bây giờ, đối tượng lớp ObjectInputStream “os” sẽ sử dụng đối tượng luồng đầu vào tệp “fs” để đọc dữ liệu bằng cách sử dụng hàm readObject () của java trong câu lệnh thực thi “println” của lớp “System.out”. Sau đó, chúng ta có xu hướng đóng các luồng đầu vào và đầu ra bằng cách gọi hàm “close” và câu lệnh catch được sử dụng để loại bỏ bất kỳ ngoại lệ nào đã xảy ra trong phần thử và tránh việc đóng đột ngột quá trình thực thi chương trình này.

Việc thực thi tệp mã java này và tệp văn bản đã hiển thị giá trị chuỗi trên bảng điều khiển.

Sự kết luận

Việc sử dụng lớp ObjectInputStream là phương pháp duy nhất có sẵn để đọc các chất sử dụng giao thức Có thể hóa nối tiếp hoặc Có thể hóa ngoài. Tóm lại, chúng tôi đã bao gồm tất cả các chi tiết cần thiết để sử dụng lớp objectinputstream của java để đọc dữ liệu từ luồng đầu vào đối tượng tệp. Đối với điều này, chúng tôi đã truyền hai ví dụ mã java khác nhau ở đây. Ví dụ đầu tiên sử dụng giá trị biến đầu vào kiểu số nguyên, trong khi hình minh họa thứ hai đã truyền giá trị biến chuỗi, tức là được đọc từ luồng tệp đầu vào.