package com.zk919;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import java.util.Enumeration;
import java.util.Vector;
/**
* 序列流
* SequenceInputStream
* 功能:可以将多个输入流进行串联读取
*
* 没有读写能力
*
* 合并
*/
public class Demo5 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//test1();
File inFile1 = new File("e:\\123\\adele - rolling in the deep.mp3");
File inFile2 = new File("e:\\123\\Adele - Someone Like You.mp3");
File inFile3 = new File("e:\\123\\Akon-Na Na Na.mp3");
File outFile = new File("e:\\hehe.mp3");
FileOutputStream fos = new FileOutputStream(outFile);
FileInputStream fis1 = new FileInputStream(inFile1);
FileInputStream fis2 = new FileInputStream(inFile2);
FileInputStream fis3 = new FileInputStream(inFile3);
Vector<FileInputStream> vector = new Vector<FileInputStream>();//线程安全类
vector.add(fis1);
vector.add(fis2);
vector.add(fis3);
Enumeration<FileInputStream> e = vector.elements();//迭代
SequenceInputStream sqis = new SequenceInputStream(e);
byte[] buf = new byte[1024];
int length;
while((length=sqis.read(buf)) != -1) {
fos.write(buf, 0, length);
}
sqis.close();
fos.close();
}
public static void test1() throws FileNotFoundException, IOException {
File inFile1 = new File("e:\\a.txt");
File inFile2 = new File("e:\\1.txt");
File outFile = new File("e:\\hehe.txt");
FileOutputStream fos = new FileOutputStream(outFile);
FileInputStream fis1 = new FileInputStream(inFile1);
FileInputStream fis2 = new FileInputStream(inFile2);
SequenceInputStream sqis = new SequenceInputStream(fis1, fis2);
byte[] buf = new byte[1024];
int length;
while((length=sqis.read(buf)) != -1) {
fos.write(buf, 0, length);
}
sqis.close();
fos.close();
}
}
还可以用别的集合存放,实现流的串联,举个例子,用ArrayList实现
package com.zk919;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
/**
* 作业:ArraysList 实现多个文件的合并
*/
public class Demo6 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
File inFile1 = new File("e:\\a.txt");
File inFile2 = new File("e:\\1.txt");
File inFile3 = new File("e:\\b.txt");
File outFile = new File("e:\\hehe.txt");
FileOutputStream fos = new FileOutputStream(outFile);
FileInputStream fis1 = new FileInputStream(inFile1);
FileInputStream fis2 = new FileInputStream(inFile2);
FileInputStream fis3 = new FileInputStream(inFile3);
ArrayList<FileInputStream> a = new ArrayList<FileInputStream>();
a.add(fis1);
a.add(fis2);
a.add(fis3);
Enumeration<FileInputStream> e = Collections.enumeration(a);
SequenceInputStream sqis = new SequenceInputStream(e);
byte[] buf = new byte[1024];
int length;
while((length=sqis.read(buf)) != -1) {
fos.write(buf, 0, length);
}
sqis.close();
fos.close();
}
}