学习到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. h5-渐变的基本描述

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. h5-边框图片

    1.边框图片详解 <style> *{ ; ; } div{ width: 900px; height: 900px; margin: 100px auto; border: 133px ...

  3. urllib简单介绍

    # urllib简介: 1.urllib模块是Python的一个请求模块 2.Python2中是urllib和urllib2相结合实现请求的发送. Python3中统一为urllib库 3.urlli ...

  4. LA 6621 /ZOJ 3736 Pocket Cube 打表+暴力

    这道题是长沙区域赛的一道简单题,当时题目在ZOJ重现的时候就做了一次,但是做的好复杂,用的BFS暴力,而且还没打表,最后还是莫名其妙的爆栈错误,所以就一直没弄出来,昨天做到大白书上例题05年东京区域赛 ...

  5. PAT Basic 1132 数列的⽚段和(20) [数学问题-简单数学]

    题目 给定⼀个正数数列,我们可以从中截取任意的连续的⼏个数,称为⽚段.例如,给定数列{0.1, 0.2, 0.3,0.4},我们有(0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0 ...

  6. LGOJ1264 K-联赛

    这题其实不难想到 Description link 题意太长了,概括不来,去题库里扫一眼吧(但是很好懂) Solution \[Begin\] 考虑一个事情:每一个队伍的输局是没有用的 贪心一下,让每 ...

  7. python字典常用方法

    字典(Dictionary) 字典是一个无序.可变和有索引的集合.在 Python 中,字典用花括号编写,拥有键和值. 实例 创建并打印字典: thisdict = { "brand&quo ...

  8. 怎么通过scanf读取一个空白前的字符

    /************************************************************************* > File Name: scanf2.c ...

  9. 流程控制 if-while-for -语句

    if 语句是用来判断条件的真假,是否成立,如果为ture就执行,为flase则跳过 1.python用缩进表示代码的归属 2.同一缩进的代码,称之为代码块,默认缩进4个      if 语句结构   ...

  10. vue中过滤器filter

    Vue.js 允许我们自定义过滤器,可被用作一些常见的文本格式化.过滤器可以用在两个地方:mustache 插值表达式. v-bind表达式.过滤器应该被添加在 JavaScript 表达式的尾部,由 ...