Tags:

Đọc kết hợp nhiều InputStream với SequenceInputStream

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. 

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x