学习到java的io流中关于序列流SequenceInputStream使用,其中把3个以上的流串联起来操作,

使用的参数是生成运行时类型为 InputStream 对象的 Enumeration 型参数,本人对Enumeration集合

了解较少,便记录一下:

方法一:

    通过Vector集合来获得:

         InputStream is1 = new FileInputStream("d:\\1.txt");
InputStream is2 = new FileInputStream("d:\\2.txt");
InputStream is3 = new FileInputStream("d:\\3.txt");
OutputStream os = new FileOutputStream("d:\\4.txt"); //使用Vector集合获取Enumeration
Vector<InputStream> v = new Vector<InputStream>();
v.add(is1);
v.add(is2);
v.add(is3); Enumeration<InputStream> elem = v.elements(); SequenceInputStream sis = new SequenceInputStream(elem); byte[] buf = new byte[1024]; int len = 0; while((len = sis.read(buf)) != -1)
{
os.write(buf, 0, len);
}

如果要想操作里面的元素,可以使用它的两个方法

 1      //使用Vector集合获取Enumeration
Vector<InputStream> v = new Vector<InputStream>();
v.add(is1);
v.add(is2);
v.add(is3); Enumeration<InputStream> elem = v.elements();

      
while(elem.hasMoreElements())
{
System.out.println(elem.nextElement());
}

方法二:

  利用List集合+Iterator+匿名内部类方法实现

  

         InputStream is1 = new FileInputStream("d:\\1.txt");
InputStream is2 = new FileInputStream("d:\\2.txt");
InputStream is3 = new FileInputStream("d:\\3.txt");
OutputStream os = new FileOutputStream("d:\\4.txt"); LinkedHashSet<InputStream> set = new LinkedHashSet<InputStream>();
set.add(is1);
set.add(is2);
set.add(is3); final Iterator<InputStream> it = set.iterator(); Enumeration<InputStream> en = new Enumeration<InputStream>()
{ @Override
public boolean hasMoreElements()
{
// TODO Auto-generated method stub
return it.hasNext();
} @Override
public InputStream nextElement()
{
// TODO Auto-generated method stub
return it.next();
}
}; SequenceInputStream sis = new SequenceInputStream(en);    byte[] buf = new byte[1024];
           int len = 0;

           while((len = sis.read(buf)) != -1)
{
os.write(buf, 0, len);
}

如果要想操作里面的元素,也可以使用它的两个方法

      Enumeration<InputStream> en = new Enumeration<InputStream>()
{ @Override
public boolean hasMoreElements()
{
// TODO Auto-generated method stub
return it.hasNext();
} @Override
public InputStream nextElement()
{
// TODO Auto-generated method stub
return it.next();
}
}; while(en.hasMoreElements())
{
System.out.println(en.nextElement());
}

Java 获取Enumeration类型的集合的更多相关文章

  1. Java获取未知类型对象的属性

    获取未知类型对象的属性通常有两种方式: 一是通过自定义注解的方式,通过获取被注解的属性从而获取属性的值,这种方式也是Spring参数注入的重要实现手段 二是通过反射获取属性的名称,通过属性名从而获取属 ...

  2. java获取Timestamp类型的当前系统时间

    java获取取得Timestamp类型的当前系统时间 java获取取得Timestamp类型的当前系统时间 格式:2010-11-04 16:19:42 方法1: Timestamp d = new ...

  3. Java获取Date类型-针对SQL语句

    简便使用Date类型: import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedState ...

  4. java获取本地IP地址集合包括虚拟机的ip

    public static ArrayList<String> getLocalIpAddr() { ArrayList<String> ipList = new ArrayL ...

  5. Java获取泛化类型

    @Retention(RetentionPolicy.RUNTIME) public @interface MongodbTable { String name(); } public class A ...

  6. java 获取浏览器类型

    public String getBrowserType(HttpServletRequest request)   {     String type = "ie";     S ...

  7. java获取系统类型与版本

    System的properties中有很多系统属性: System.out.println(System.getProperty("os.name")); System.out.p ...

  8. 复习java基础第四天(集合:List、Map、Collections、Enumeration)

    一.List: List 代表一个元素有序.且可重复的集合,集合中的每个元素都有其对应的顺序索引 List 允许使用重复元素,可以通过索引来访问指定位置的集合元素. List 默认按元素的添加顺序设置 ...

  9. JAVA获取指定的类型的本机MAC地址

    前面我们运维小伙在部署的时候,发现在真实服务器获取不到mac地址或者获取不到指定类型的mac地址,写程序记录如下 import com.google.common.base.Strings; impo ...

随机推荐

  1. 修复grub

    进入命令行模式,#chroot /mnt/sysimage :切换根目录#grub2-install /dev/sda :安装grub2到第一硬盘#grub2-mkconfig -o /boot/gr ...

  2. Excel Old format or invalid type library 错误原因

    Old format or invalid type library 错误原因 调用excel方法失败,Old format or invalid type library 解决方案: 1,这是Exc ...

  3. iTOP-4412-Ubuntu系统源码-ubuntu没有声音的解决办法

    准备工作 1.下载 vim 在命令行上输入 apt-get install vim 下载 vim 2.输入 vim /etc/hosts 在所打开界面的第一行最后写上 iTOP4412-ubuntu- ...

  4. IOC与AOP的理解

    转自 https://blog.csdn.net/qq_38006047/article/details/80797386 1,理解“控制反转” 控制反转,也叫依赖注入,是面向对象编程中的一种设计理念 ...

  5. kafka Poll轮询机制与消费者组的重平衡分区策略剖析

    注意本文采用最新版本进行Kafka的内核原理剖析,新版本每一个Consumer通过独立的线程,来管理多个Socket连接,即同时与多个broker通信实现消息的并行读取.这就是新版的技术革新.类似于L ...

  6. Powershell 中的管道

    管道 上个命令中的输出,通过管道作为下个命令的输入.Linux中的管道传递的是text,但ps中传递的是object.但是命令究竟返回的是什么类型呢?以下命令回答了这个问题: get-service ...

  7. 图论模型--dijstra算法和floyd算法

    matlab代码实现:https://blog.csdn.net/weixin_40108753/article/details/81237585 python代码实现:

  8. linux上systemctl使用

    转载:https://www.cnblogs.com/zdz8207/p/linux-systemctl.html Linux服务器,服务管理--systemctl命令详解,设置开机自启动 syete ...

  9. Tidb go mac 上开发环境搭建

    1.安装golang 运行环境 2.安装lite ide 工具 3.安装dep 包管理工具 4.安装delve debuger 调试工具 我用的是mac hight sierra 10.13 版, 会 ...

  10. selenium自学记录2014.12.26

    现在还是有点病急乱投医的感觉,不知道到底该从何学起,到底怎么学 手头上有的资料是 <零成本实现Web自动化测试-基于Selenium和Bromine> <Selenium测试实践-基 ...