专栏首页钟绍威的专栏SequenceInputStreamSequenceInputStream构造方法读关流刷新

SequenceInputStreamSequenceInputStream构造方法读关流刷新

SequenceInputStream从名字上看, 他是一个序列字节输入流 既然是个序列 那么意味着 SequenceInputStream装着许多的输入流 所以 可以用他来合并文件

SequenceInputStream的主要方法

SequenceInputStream构造方法

new SequenceInputStream(Enumeration) 接受一个输入流泛型的枚举

然后怎么创建枚举呢??

Vector.elements():Enumeration Vector继承自AbstractArrayList 所以创建和填充Vector的方法和创建Collection的方法一样

read(byte []array) availabe():负责提供数组的长度 既然是输入流,当然也会有read()方法啦 还可以BufferredReader(new InputStreamReader(new SequenceInputStream(enum))) 然后使用readLine()方法 读的方法如果读完了一个流 会自动跳到下一个流!!

关流刷新

flush(); close();


实际应用

可用于将多个文件合并为一个文件 如: 看连载小说的时候是一章章的出,最后要整理成一本,那么就用到SequenceInputStream 某某视频网站的缓冲视频在本地是分段的文件,那这时看起来就很不爽啦,就可以用SequenceInputStream合并 tips:处理大文件的时候,小心数组长度超出了限度

下面做一个将lang包里面的java文件连在一起

package mypackage;
import java.io.*;
import java.util.*;
public class CombineNovel{
    public static void main(String[] args)throws IOException{
        Vector<InputStream> vectory=new Vector<InputStream>();
        //关联目录
        File directory=new File("C:\\Program Files\\Java\\jdk1.8.0_60\\src\\java\\lang");
        //取出java文件的字符串数组
        String[] javasname=directory.list(new FilenameFilter(){
            //匿名内部类实现FilenameFilter接口
            private boolean isJava(String filename){
                return filename.toLowerCase().endsWith(".java");
                }
            public boolean accept(File file,String name){
                return this.isJava(name);
                }
            });
        //填充容器
        for(String filename:javasname){
            vectory.add(new FileInputStream("C:\\Program Files\\Java\\jdk1.8.0_60\\src\\java\\lang\\"+filename));
            }
        //生成枚举
        Enumeration enumeration=vectory.elements();
        //生成SequenceInputStream
        SequenceInputStream sis=new SequenceInputStream(enumeration);
        //缓冲技术提高效率
        BufferedInputStream bis=new BufferedInputStream(sis);
        //建立目的地输出流
        BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("all_lang.java"));
        int len=0;
        while((len=bis.read())!=-1){
            bos.write(len);
            }
        bis.close();
        bos.close();
        }
    }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 操作系统启动顺序bios在哪里寻址机制bootloader结构建立段机制使能保护模式

    概述 在这里以x86的处理器为例 机器在启动的时候会执行第一条指令。这条指令会去执行bios,将控制权交给bios。 bios完成硬件的质检,然后将boot...

    用户1174983
  • 初识字节流+实现缓冲字节流OutputStream的主要方法构造方法读关流实现BufferedInputStream实现BufferedOutputStream为什么read()返回的是Int型而不是

    java中的IO流可以分为两种:字符流和字节流 字符流,顾名思义,就是对字符进行操作,只能操作文本文件 字节流,就是对字节进行操作,然而所有文件都是由字...

    用户1174983
  • 当输入流和输出流同时作用一个文件

    当输入流和输出流同时作用一个文件会发生什么 以前试过:当输入流或输出流作用在一个文件上,而且流没有关闭的话,这时候我想删除这个文件是失败的,会提示文件被占用...

    用户1174983
  • 中文全文检索讯搜xunsearch安装

    Xunsearch (迅搜)是一套免费开源的专业中文全文检索解决方案,简单易用而且 功能强大、性能卓越能轻松处理海量数据的全文检索。它包含后端索引、搜索服务程序...

    ytkah
  • 深度学习笔记2-神经网络的基本内容

    「学习内容总结自 coursera 和 udacity 的深度学习课程,部分截图来自 udacity 的课件」

    caoqi95
  • JAVA学习Swing章节JPanel和JScrollPane面板的简单学习

    package com.swing; import java.awt.Container; import java.awt.GridLayout; impo...

    别先生
  • Java之Properties及对象序列化

    Properties 是在java.util包中,该类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个...

    用户5224393
  • 运行jar命令提示:没有主清单属性或者找不到或无法加载主类

    文章如题:在JAVA中将class文件编译成jar文件包,运行提示没有主清单属性。这是怎么回事?

    浩Coding
  • python定时任务最强框架APScheduler详细教程

    上次测试女神听了我的建议,已经做好了要给项目添加定时任务的决定了。但是之前提供的四种方式中,她不知道具体选择哪一个。为了和女神更近一步,我把我入行近10年收藏的...

    无涯WuYa
  • bash运行脚本的几种方式 转

    bash shell 脚本执行的方法有多种,本文作一个总结,供大家学习参考。 假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/...

    wuweixiang

扫码关注云+社区

领取腾讯云代金券