Java InputStream hoạt động như thế nào

Java Inputstream Hoat Dong Nhu The Nao



Java cho phép các nhà phát triển làm việc với các tệp. Trong trường hợp như vậy, “ Dòng đầu vào ” lớp có hiệu lực hỗ trợ đọc nội dung tệp được chỉ định cùng với việc phân tích các byte chứa trong đó. Điều này dẫn đến việc đối phó với các vấn đề về bộ nhớ và cũng trả lại nội dung tệp chọn lọc theo yêu cầu một cách hiệu quả.

Bài viết này sẽ trình bày chi tiết về hoạt động của “InputStream” trong Java.







Java InputStream hoạt động như thế nào?

Lớp “InputStream” của “ java.io ” gói tương ứng với một lớp cha trừu tượng trả về một luồng đầu vào bao gồm các byte đối với tệp đã chỉ định.



Các lớp con của InputStream

Để áp dụng các chức năng của “InputStream”, các lớp con sau của nó có thể được sử dụng:



    • FileInputStream
    • ObjectInputStream
    • ByteArrayInputStream

Chính vì vậy mà các lớp con này mở rộng lớp “InputStream”.





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

Lớp “InputStream” chứa các phương thức khác nhau được áp dụng bởi các lớp con của nó. Sau đây là một số phương pháp được sử dụng phổ biến nhất:

phương pháp chức năng
đọc() Nó đọc một byte dữ liệu từ luồng đầu vào.



đọc (byte [] mảng) Nó cũng đọc các byte từ luồng và lưu trữ chúng trong mảng đích.

nhảy() Phương thức này bỏ qua/bỏ qua số byte cụ thể từ luồng đầu vào.

có sẵn() Nó cung cấp các byte chứa trong luồng đầu vào.
cài lại() Nó cấp quyền truy cập vào điểm truyền phát nơi đánh dấu được đặt.

đánh dấu() Phương thức này đánh dấu vị trí trong luồng cho đến khi dữ liệu được đọc.

đánh dấuHỗ trợ() Nó phân tích xem các phương thức “mark()” và “reset()” có được hỗ trợ/tương thích trong luồng hay không.


Trước khi chuyển sang ví dụ, hãy nhập các gói sau để hoạt động với “InputStream” và lớp con của nó:

nhập java.io.FileInputStream;
nhập java.io.InputStream;


Ví dụ: Hoạt động của InputStream trong Java

Ví dụ này minh họa hoạt động của “InputStream” bằng cách đọc nội dung tệp thông qua các phương thức “InputStream”:

lớp công khai {
public tĩnh void main ( Chuỗi đối số [ ] ) {
byte [ ] choarray = byte mới [ năm mươi ] ;
thử {
InputStream readData = FileInputStream mới ( 'readfile.txt' ) ;
System.out.println ( 'Byte trong tệp ->' + readData.available ( ) ) ;
readData.read ( mảng nhất định ) ;
System.out.println ( 'Đọc dữ liệu tệp:' ) ;
Chuỗi chứa dữ liệu = Chuỗi mới ( mảng nhất định ) ;
System.out.println ( chứa dữ liệu ) ;
readData.close ( ) ;
}
nắm lấy ( ngoại lệ ngoại trừ ) {
ngoại trừ.getStackTrace ( ) ;
}
} }


Theo các dòng mã trên, hãy thực hiện các bước được nêu dưới đây:

    • Đầu tiên, tạo một mảng 'byte' có thể bao gồm tối đa ' năm mươi ” các giá trị byte trong tệp đã đọc.
    • Trong bước tiếp theo, hãy tạo một “ Dòng đầu vào ” bằng cách sử dụng “FileInputStream” và trả về các byte khả dụng trong tệp đã chỉ định thông qua liên kết “ có sẵn() ' phương pháp.
    • Sau đó, đọc các byte từ luồng đầu vào bằng cách sử dụng “ đọc() ' phương pháp.
    • Bây giờ, chuyển mảng byte thành chuỗi và hiển thị nội dung tệp.
    • Cuối cùng, đóng tệp đã đọc bằng liên kết “ đóng() ' phương pháp.

đầu ra


Trong kết quả này, có thể ngụ ý rằng số lượng byte trong tệp tức là dung lượng tích lũy của nội dung được trả về theo phạm vi tối đa trong mảng byte tức là “50”. Ngoài ra, nội dung tệp được trả lại một cách thích hợp.

Nội dung tệp


Để có cái nhìn tổng quan về “ nhảy() ' Và ' cài lại() ” phương pháp, hãy xem xét trình diễn sau:


Trong hình minh họa này, phương thức “skip()” bỏ qua số byte đã chỉ định, tức là, “ 5 -> Java ” từ nội dung tệp ngay từ đầu. Tuy nhiên, phương thức “đặt lại ()” sẽ đặt lại luồng.

Phần kết luận

Các ' Dòng đầu vào ' lớp của ' java.io ” gói là một siêu lớp trừu tượng tương ứng với một luồng byte đầu vào được sử dụng để đọc dữ liệu tệp. Lớp này bao gồm các phương thức khác nhau hỗ trợ các phương pháp đọc tệp một cách hiệu quả theo yêu cầu. Blog này đã trình bày mục đích và cách thức hoạt động của “InputStream” trong Java.