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.
Nội dung chính
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:
- Full series tự học Java từ cơ bản tới nâng cao tại đây nha.
- Ebook về Java tại đây.
- Các nguồn kiến thức MIỄN PHÍ VÔ GIÁ từ cafedev tại đây
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!