学习到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. 解决ubuntu16.04 ‘E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用) ’ 问题

    问题: 当运行sudo apt-get install/update/其他命令时,会出现如下提示: E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资 ...

  2. vue中使用elementUI中表格的v宽度,字体大小

    <el-table :row-style="{height:'20px'}" :cell-style="{padding:'0px'}" style=&q ...

  3. LeetCode——739. 每日温度

    根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数.如果之后都不会升高,请在该位置用 0 来代替. 例如,给定一个列表 temperatures = ...

  4. 61)普通类的.h和.cpp分离

    //标头.h文件 //这个是在C中这样写 #ifndef HH_01//开始写小写 hh_01 然后选中这个 crtl+shift+u 就变成大写了 #define HH_01 #endif //在C ...

  5. one_day_one_linuxCmd---wget命令

    <坚持每天学习一个 linux 命令,今天我们来学习 wget 命令> Linux wget 是一个文件下载工具,它用在命令行下,使用也非常方便,不但体积小而且功能完善,并支持很多强大的功 ...

  6. Java之同步方法处理继承Thread类的线程安全问题

    /** * 使用同步方法处理继承Thread类的方式中的线程安全问题 * */class Window4 extends Thread { private static int ticket = 10 ...

  7. 洛谷 P3811 【模板】乘法逆元(欧拉定理&&线性求逆元)

    题目传送门 逆元定义 逆元和我们平时所说的倒数是有一定的区别的,我们平时所说的倒数是指:a*(1/a) = 1,那么逆元和倒数之间的区别就是:假设x是a的逆元,那么 a * x = 1(mod p), ...

  8. Django_HTML

    一.web开发之HTML 1.1 HTML相关基础 快速生成html的模版方法: 在visual code的新建html文件中输入:!然后tab回车就会出现HTML的模版 双标签: <p> ...

  9. goweb-web服务

    Web服务 Web服务可以让你在HTTP协议的基础上通过XML或者JSON来交换信息.如果你想知道上海的天气预报.中国石油的股价或者淘宝商家的一个商品信息,你可以编写一段简短的代码,通过抓取这些信息然 ...

  10. 阿里云ECS搭建邮件服务

    安装mailx [root@db ~]# yum install -y mailx [root@db ~]# vim /etc/mail.rc 设置发件人信息 ..... set from=yunwe ...