SequenceInputStream cho phép chúng ta đọc kết hợp nhiều InputStream và đọc từng InputStream theo thứ tự.
Constructor
SequenceInputStream cung cấp hai construcotr để khởi tạo SequenceInputStream object.
- SequenceInputStream(Enumeraion e) – Khởi tạo SequenceInputStream object với một tập các InputStream chứa trong Enumeration.
- SequenceInputStream(InputStream input1, InputStream input2) – Khởi tạo SequenceInputStream object với 2 object input stream, thứ tự đọc từ input1 đến input2.
Ví dụ SequenceInputStream
import java.io.*; import java.util.*; class SequenceISDemp { public static void main(String args[]) { FileInputStream fin = null; FileInputStream fin2 = null; FileInputStream fin3 = null; SequenceInputStream sin = null; try { //creating the FileInputStream objects for all the following files fin = new FileInputStream("file1.txt"); fin2 = new FileInputStream("file2.txt"); fin3 = new FileInputStream("file3.txt"); //adding fileinputstream obj to a vector object Vector v = new Vector(); v.add(fin); v.add(fin2); v.add(fin3); //creating enumeration object by calling the elements method Enumeration enumeration = v.elements(); //passing the enumeration object in the constructor sin = new SequenceInputStream(enumeration); // determine how many bytes are available in the first stream System.out.println("" + sin.available()); // Estimating the number of bytes that can be read // from the current underlying input stream System.out.println(sin.available()); int i; while ((i = sin.read()) != -1) { System.out.print((char) i); } } catch (IOException e) { e.printStackTrace(); } finally { try { sin.close(); fin.close(); fin2.close(); fin3.close(); } catch (IOException e) { e.printStackTrace(); } } } }
Các method trong SequenceInputStream
Cũng tương tự như các InputStream khác, SequenceInputStream cũng có các method cơ bản như read(), available(), close().
read() – đọc byte tiếp theo trong Input stream.
read(byte[] b, int off, int len) – Đọc mảng dữ vào mảng b bắt đầu tại off và tối đa len byte.
read(byte[] b) – Đọc mảng dữ liệu vào mảng b.
available() – Trả về số byte còn lại trong input stream.
close() – Đóng kết nối với các nguồn dữ liệu đang tham chiếu đến.
Tóm lược
Sử dụng SequenceInputStream khi bạn có nhu cầu đọc kết hợp dữ liệu từ nhiều InputStream khác nhau như FileInputStream với ByteArrayInputStream etc.