package demo.io;
import java.io.*;
import java.util.*;
/**
* 将三个文件信息合并至一个文件中
*/
class 序列流SequenceInputStream {
public static void main(String[] args) {
Vector<FileInputStream> fileVec = new Vector<>();//方法1
ArrayList<FileInputStream> fileArr = new ArrayList<>();//方法2
try {
//方法1 使用Vector容器插入需要合并的文件路径
fileVec.add(new FileInputStream("后期设备的配置文件.properties"));
fileVec.add(new FileInputStream("系统信息日志.txt"));
fileVec.add(new FileInputStream("异常日志.txt"));
//方法2 使用ArrayList容器插入需要合并的文件路径
fileArr.add(new FileInputStream("后期设备的配置文件.properties"));
fileArr.add(new FileInputStream("系统信息日志.txt"));
fileArr.add(new FileInputStream("异常日志.txt"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
//方法1 利用枚举获得Vector中元素
Enumeration<FileInputStream> en1 = fileVec.elements();
//方法2 利用迭代器获得ArrayList中元素
final Iterator<FileInputStream> it = fileArr.iterator();
//枚举内部类
Enumeration<FileInputStream> en2 = new Enumeration<FileInputStream>() {
@Override
public boolean hasMoreElements() {
return it.hasNext();//内部类访问外部类元素需要加final关键字
}
@Override
public FileInputStream nextElement() {
return it.next();
}
};
//方法3 方法3的原理就是方法2
Enumeration<FileInputStream> en3 = Collections.enumeration(fileArr);
//方法4 用于两个流合并
try {
SequenceInputStream sis2 = new SequenceInputStream(new FileInputStream("1.txt"), new FileInputStream("2.txt"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
//使用序列流接受这些元素
SequenceInputStream sis = new SequenceInputStream(en3);
int len = 0;
byte[] buf = new byte[1024];
PrintWriter pw = null;
try {
//写入总文件,并开启自动刷新
pw = new PrintWriter(new FileWriter("总文件.txt"), true);
while ((len = sis.read(buf)) != -1) {
pw.print(new String(buf, 0, len));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (pw != null) {
pw.close();
}
try {
sis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
序列流SequenceInputStream将三个文件信息合并至一个文件中
最新推荐文章于 2023-08-25 10:09:09 发布