Lớp SequenceInputStream trong java được sử dụng để đọc dữ liệu từ nhiều stream. Nó đọc dữ liệu tuần tự (từng cái một).
Khai báo của lớp SequenceInputStream
Dưới đây là khi báo của lớp Java.io.SequenceInputStream:
public class SequenceInputStream extends InputStream
Nội dung chính
Các constructor của lớp SequenceInputStream
Constructor | Mô tả |
---|---|
SequenceInputStream(InputStream s1, InputStream s2) | Tạo ra một input stream mới bằng cách đọc dữ liệu của hai input stream theo thứ tự, đầu tiên s1 và sau đó s2. |
SequenceInputStream(Enumeration e) | Tạo ra một input stream mới bằng cách đọc dữ liệu của một Enumeration mà kiểu của nó là InputStream. |
Các phương thức của lớp SequenceInputStream
Phương thức | Mô tả |
---|---|
int read() | Nó được sử dụng để đọc byte tiếp theo của dữ liệu từ input stream. |
int read(byte[] ary, int off, int len) | Nó được sử dụng để đọc len byte dữ liệu từ dòng đầu vào vào mảng các byte tử vị trí off. |
int available() | Nó được sử dụng để trả lại số byte tối đa có thể được đọc từ một input stream. |
void close() | Nó được sử dụng để đóng input stream. |
Ví dụ về đọc file trong java với lớp SequenceInputStream
Trong ví dụ này, chúng ta in dữ liệu của hai file testin.txt và testout.txt.
Giả sử các file testin.txt và testout.txt có nội dung như sau:
File: testin.txt
Welcome to Java IO.
File: testout.txt
It is the example of SequenceInputStream.
File: SequenceInputStreamExample.java
import java.io.FileInputStream; import java.io.IOException; import java.io.SequenceInputStream; public class SequenceInputStreamExample { public static void main(String args[]) throws Exception { FileInputStream input1 = null; FileInputStream input2 = null; SequenceInputStream inst = null; try { input1 = new FileInputStream("D:\\testin.txt"); input2 = new FileInputStream("D:\\testout.txt"); inst = new SequenceInputStream(input1, input2); int j; while ((j = inst.read()) != -1) { System.out.print((char) j); } } catch (IOException ex) { } finally { inst.close(); input1.close(); input2.close(); } } }
Output của chương trình trên:
Welcome to Java IO.It is the example of SequenceInputStream.
Ví dụ về đọc dữ liệu của 2 file và ghi vào một file khác
Trong ví dụ này, chúng ta đọc dữ liệu của từ 2 file testin.txt và testout.txt sau đó ghi dữ liệu vào file có tên là testout2.txt.
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.SequenceInputStream; public class SequenceInputStreamExample2 { public static void main(String args[]) throws IOException { FileInputStream fin1 = new FileInputStream("D:\\testin.txt"); FileInputStream fin2 = new FileInputStream("D:\\testout.txt"); FileOutputStream fout = new FileOutputStream("D:\\testout2.txt"); SequenceInputStream sis = new SequenceInputStream(fin1, fin2); int i; while ((i = sis.read()) != -1) { fout.write(i); } sis.close(); fout.close(); fin1.close(); fin2.close(); System.out.println("Success.."); } }
Output:
Succeess...
Nội dung của file output testout2.txt
Welcome to Java IO.It is the example of SequenceInputStream.
Ví dụ về lớp SequenceInputStream đọc dữ liệu sử dụng Enumeration
Nếu chúng ta cần đọc dữ liệu từ nhiều hơn hai file, chúng ta cần sử dụng Enumeration. Có thể gọi ra thể hiện cuar đối tượng Enumeration bằng cách gọi phương thức elements() của lớp Vector. Trong ví dụ dưới đây chúng ta đọc dữ liệu từ 4 file: a.txt, b.txt, c.txt và d.txt.
File:
import java.io.FileInputStream; import java.io.IOException; import java.io.SequenceInputStream; import java.util.Enumeration; import java.util.Vector; public class SequenceInputStreamExample3 { public static void main(String args[]) throws IOException { // tạo các đối tượng FileInputStream cho tất cả các file FileInputStream fin1 = new FileInputStream("D:\\a.txt"); FileInputStream fin2 = new FileInputStream("D:\\b.txt"); FileInputStream fin3 = new FileInputStream("D:\\c.txt"); FileInputStream fin4 = new FileInputStream("D:\\d.txt"); // Tạo đối tượng Vector để lưu các stram Vector<FileInputStream> v = new Vector<FileInputStream>(); v.add(fin1); v.add(fin2); v.add(fin3); v.add(fin4); // Tạo đối Enumeration bởi việc gọi phương thức elements Enumeration<FileInputStream> e = v.elements(); // Truyền đối tượng Enumeration tới constructor SequenceInputStream bin = new SequenceInputStream(e); int i = 0; while ((i = bin.read()) != -1) { System.out.print((char) i); } bin.close(); fin1.close(); fin2.close(); fin3.close(); fin4.close(); } }
Các file a.txt, b.txt, c.txt và d.txt có nội dung như dưới đây:
File: a.txt
Welcome
File: b.txt
to
File: c.txt
java
File: d.txt
programming
Output:
Welcometojavaprogramming