SequenceInputStream

 1 package file;
 2 
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.FileOutputStream;
 6 import java.io.IOException;
 7 import java.io.SequenceInputStream;
 8 import java.util.Enumeration;
 9 import java.util.Vector;
10 
11 public class Demo9 {
12     public static void main(String[] args) throws IOException {
13 //        merge1();
14         merge2();
15     }
16     
17     
18     //把三个文件合并
19     public static void merge2() throws IOException {
20         //找到目标文件
21         File inFile1 = new File("F:\1.txt");
22         File inFile2 = new File("F:\2.txt");
23         File inFile3 = new File("F:\3.txt");
24         File outFile = new File("F:\a.txt");
25         //建立数据的输入输出通道
26         FileOutputStream fileOutputStream = new FileOutputStream(outFile);
27         FileInputStream fileInputStream1 = new FileInputStream(inFile1);
28         FileInputStream fileInputStream2 = new FileInputStream(inFile2);
29         FileInputStream fileInputStream3 = new FileInputStream(inFile3);
30         
31         //创建序列流对象
32         Vector<FileInputStream> vector = new Vector<FileInputStream>();
33         vector.add(fileInputStream1);
34         vector.add(fileInputStream2);
35         vector.add(fileInputStream3);
36         Enumeration<FileInputStream> e = vector.elements();
37         
38         SequenceInputStream sequenceInputStream = new SequenceInputStream(e);
39         
40         //读取文件数据
41         byte[] buf = new byte[1024];
42         int length = 0;
43         while((length = sequenceInputStream.read(buf))!=-1) {
44             fileOutputStream.write(buf, 0, length);
45         }
46         sequenceInputStream.close();
47         fileOutputStream.close();
48     }
49     
50     //使用SequenceInputStream合并
51     public static void merge1() throws IOException {
52         //找到目标文件
53         File inFile1 = new File("F:\2.txt");
54         File inFile2 = new File("F:\a.txt");
55         File outFile = new File("F:\1.txt");
56         //建立数据的输入输出通道
57         FileOutputStream fileOutputStream = new FileOutputStream(outFile);
58         FileInputStream fileInputStream1 = new FileInputStream(inFile1);
59         FileInputStream fileInputStream2 = new FileInputStream(inFile2);        
60         //建立序列流对象
61         SequenceInputStream inputStream = new SequenceInputStream(fileInputStream1,fileInputStream2);
62         byte[] buf = new byte[1024];
63         int length = 0;
64         
65         while((length = inputStream.read(buf))!=-1) {
66             fileOutputStream.write(buf, 0, length);
67         }
68         //关闭资源
69         inputStream.close();
70         fileOutputStream.close();
71     }
72 }
原文地址:https://www.cnblogs.com/linst/p/5665716.html