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

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

了解较少,便记录一下:

方法一:

    通过Vector集合来获得:

  1. InputStream is1 = new FileInputStream("d:\\1.txt");
  2. InputStream is2 = new FileInputStream("d:\\2.txt");
  3. InputStream is3 = new FileInputStream("d:\\3.txt");
  4. OutputStream os = new FileOutputStream("d:\\4.txt");
  5.  
  6. //使用Vector集合获取Enumeration
  7. Vector<InputStream> v = new Vector<InputStream>();
  8. v.add(is1);
  9. v.add(is2);
  10. v.add(is3);
  11.  
  12. Enumeration<InputStream> elem = v.elements();
  13.  
  14. SequenceInputStream sis = new SequenceInputStream(elem);
  15.  
  16. byte[] buf = new byte[1024];
  17.  
  18. int len = 0;
  19.  
  20. while((len = sis.read(buf)) != -1)
  21. {
  22. os.write(buf, 0, len);
  23. }

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

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

  8.       
  9. while(elem.hasMoreElements())
  10. {
  11. System.out.println(elem.nextElement());
  12. }

方法二:

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

  

  1. InputStream is1 = new FileInputStream("d:\\1.txt");
  2. InputStream is2 = new FileInputStream("d:\\2.txt");
  3. InputStream is3 = new FileInputStream("d:\\3.txt");
  4. OutputStream os = new FileOutputStream("d:\\4.txt");
  5.  
  6. LinkedHashSet<InputStream> set = new LinkedHashSet<InputStream>();
  7. set.add(is1);
  8. set.add(is2);
  9. set.add(is3);
  10.  
  11. final Iterator<InputStream> it = set.iterator();
  12.  
  13. Enumeration<InputStream> en = new Enumeration<InputStream>()
  14. {
  15.  
  16. @Override
  17. public boolean hasMoreElements()
  18. {
  19. // TODO Auto-generated method stub
  20. return it.hasNext();
  21. }
  22.  
  23. @Override
  24. public InputStream nextElement()
  25. {
  26. // TODO Auto-generated method stub
  27. return it.next();
  28. }
  29. };
  30.  
  31. SequenceInputStream sis = new SequenceInputStream(en);
  32.  
  33.    byte[] buf = new byte[1024];
  1. int len = 0;
  2. while((len = sis.read(buf)) != -1)
  3. {
  4. os.write(buf, 0, len);
  5. }

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

  1.      Enumeration<InputStream> en = new Enumeration<InputStream>()
  2. {
  3.  
  4. @Override
  5. public boolean hasMoreElements()
  6. {
  7. // TODO Auto-generated method stub
  8. return it.hasNext();
  9. }
  10.  
  11. @Override
  12. public InputStream nextElement()
  13. {
  14. // TODO Auto-generated method stub
  15. return it.next();
  16. }
  17. };
  18.  
  19. while(en.hasMoreElements())
  20. {
  21. System.out.println(en.nextElement());
  22. }

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. Ubuntu编译protobuf

    个人博客地址:http://www.bearoom.xyz/2019/08/24/ubunt-protobuf/ 因为编译了tensorflow C++的版本,然后提示protobuf的版本不对应引起 ...

  2. 报错:不是GROUP BY 表达式

    oracle库中:group by后面必须加上你select后面所查询的所有除聚合函数之外的所有字段. 解决方法:将group by放入子查询中使用或者将select后面的所有查询字段放入group ...

  3. 大数据攻城狮之进阶技能-Github的使用

    引用百度百科中的介绍: github GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub. GitHub于2008年4月10日正式上线 ...

  4. 《Docekr入门学习篇》——Docker网络及数据卷

    Docker网络设置 默认情况下docker会创建一个桥接网卡[docker 0],docker有两种映射方式,一种是随机映射,一种是指定映射. 提示:生产场景一般不使用随机映射,但是随机映射的好处是 ...

  5. tensorflow模型

    图像模型 YOLOv3 , 地址 https://pjreddie.com/darknet/yolo/ vgg , 参考 https://github.com/tensorflow/models/bl ...

  6. Object中有哪些公共方法及作用

    大家在学习java的时候,一定遇到过Object类,因为在java单一继承体系中Object类是根类,所有的类都会继承它,并拥有Object的公共方法,意味着在java的面向对象的世界中,所有对象都拥 ...

  7. linux设置网络三种方法

    http://blog.csdn.net/u010003835/article/details/52233296

  8. MyBatis从入门到精通(第9章):Spring集成MyBatis(中)

    MyBatis从入门到精通(第9章):Spring集成MyBatis(中) 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法.应该将应用自身的设计和具体 ...

  9. Xpath编码问题解决

    使用Xpath获取属性时,出现乱码问题,解决办法找了好多,终于解决,特将办法贴在这,供大家尝试 不要直接简单的将爬取的网页设置为utf-8, 先通过print(r.encoding)输出看看爬取的是什 ...

  10. JS 判断移动端与PC端

    js判断移动端与pc端   这里介绍下使用device.js插件来判断移动端设备 地址:https://github.com/matthewhudson/device.js 示例: 1 2 3 4 5 ...