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

lớp InputStream của gói java.io là một lớp cha trừu tượng đại diện cho một dòng đầu vào của byte.

Vì InputStream là một lớp trừu tượng nên bản thân nó không hữu ích. Tuy nhiên, các lớp con của nó có thể được sử dụng để đọc dữ liệu.

1. Các lớp con của InputStream

Để sử dụng chức năng của InputStream, chúng ta có thể sử dụng các lớp con của nó. Một số trong số đó là:

  • FileInputStream
  • ByteArrayInputStream
  • ObjectInputStream

Chúng ta sẽ tìm hiểu về tất cả các lớp con này trong hướng dẫn tiếp theo.

2. Tạo luồng đầu vào

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

// Creates an InputStream
InputStream object1 = new FileInputStream();

Ở đây, chúng ta đã tạo một luồng đầu vào bằng cách sử dụng FileInputStream. Đó là vì InputStream là một lớp trừu tượng. Do đó chúng ta không thể tạo một đối tượng của InputStream.

Lưu ý : Chúng ta cũng có thể tạo một luồng đầu vào từ các lớp con khác của InputStream.

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

Các lớp InputStream cung cấp phương pháp khác nhau được thực hiện bởi lớp con của nó. Dưới đây là một số phương pháp thường được sử dụng:

  • read() – đọc một byte dữ liệu từ luồng đầu vào
  • read(byte[] array) – đọc các byte từ luồng và lưu trữ trong mảng được chỉ định
  • available() – trả về số byte có sẵn trong luồng đầu vào
  • mark() – đánh dấu vị trí trong luồng đầu vào mà dữ liệu đã được đọc
  • reset() – trả lại điều khiển đến điểm trong luồng nơi đánh dấu được đặt
  • markSupported()- kiểm tra xem phương thức mark()và reset()có được hỗ trợ trong luồng không
  • skips() – bỏ qua và loại bỏ số byte được chỉ định khỏi luồng đầu vào
  • close() – đóng luồng đầu vào

4. Ví dụ: InputStream Sử dụng FileInputStream

Đây là cách chúng ta có thể triển khai InputStream bằng cách sử dụng lớp FileInputStream.

Giả sử chúng ta có một tệp có tên input.txt với nội dung như sau.

This is a line of text inside the file.

Hãy thử đọc tệp này bằng cách sử dụng FileInputStream(một lớp con của InputStream).

import java.io.FileInputStream;
import java.io.InputStream;

public class Main {
    public static void main(String args[]) {

        byte[] array = new byte[100];

        try {
            InputStream input = new FileInputStream("input.txt");

            System.out.println("Available bytes in the file: " + input.available());

            // Read byte from the input stream
            input.read(array);
            System.out.println("Data read from the file: ");

            // Convert byte array into string
            String data = new String(array);
            System.out.println(data);

            // Close the input stream
            input.close();
        }
        catch (Exception e) {
            e.getStackTrace();
        }
    }
}

Đầu ra

Available bytes in the file: 35
Data read from the file:
This is a line of text inside the file

Trong ví dụ trên, chúng ta đã tạo một luồng đầu vào bằng cách sử dụng lớp FileInputStream. Luồng đầu vào được liên kết với tệp input.txt .

InputStream input = new FileInputStream("input.txt");

Để đọc dữ liệu từ tệp input.txt , chúng tôi đã thực hiện hai phương pháp này.

input.read(array);      // to read data from the input stream
input.close();             // to close the input stream

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

Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.

Nguồn và Tài liệu tiếng anh tham khảo:

Tài liệu từ cafedev:

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!