`
noble510520
  • 浏览: 56918 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

SequenceInputStream

 
阅读更多

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();
        }
    }
<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

    深刻理解java io

    5) SequenceInputStream:把多个InputStream合并为一个InputStream 2) Out stream 1) ByteArrayOutputStream:把信息存入内存中的一个缓冲区中 2) FileOutputStream:把信息存入文件中 3) PipedOutputStream:实现...

    java序列号流基础入门.docx

    Java序列化流(SequenceInputStream)是Java I/O流中的一个重要概念,它允许程序将多个输入流串联起来,形成一个逻辑上的连续输入流。这在处理多个数据源合并或连续读取时非常有用。在给定的示例代码中,我们可以...

    java序列号流基础入门.pdf

    Java序列号流(SequenceInputStream)是Java I/O流中的一个类,它允许我们将多个输入流连接在一起,就像一个单一的输入流一样进行操作。这在处理多个文件合并或者需要顺序读取不同源的数据时非常有用。 在示例代码...

    多文件输入流类的使用

    SequenceInputStream sequenceStream = new SequenceInputStream(enu); // 读取SequenceInputStream byte[] buffer = new byte[1024]; int read; while ((read = sequenceStream.read(buffer)) != -1) { ...

    JAVA IO流缓冲字节流缓冲字符流等流经典代码示例加注释总结.rar

    FileWriter、FileReader、CharArrayReader、CharArrayWriter、CharSequence、...SequenceInputStream、BufferedOutputStream、BufferedInputStream、PipedReader、PipedWriter、PipedInputStream、PipedOutputStream...

    java IO章节的总结

    - `SequenceInputStream(Enumeration&lt;InputStream&gt; e)`:接收一个包含多个输入流的枚举集合。 - `SequenceInputStream(InputStream s1, InputStream s2)`:接收两个输入流。 #### 处理流实例 1. **...

    2021-2022计算机二级等级考试试题及答案No.11966.docx

    - **知识点**:`SequenceInputStream` 类用于将多个 `InputStream` 对象合并成一个单一的 `InputStream` 对象。 - **解释**:在处理多个输入流时,如果需要将它们作为一个整体来读取数据,可以使用 `...

    2021-2022计算机二级等级考试试题及答案No.12254.docx

    - **知识点**: Java 提供了多种文件操作类,如 `BufferedReader`、`Reader`、`SequenceInputStream` 和 `InputStream` 等,它们分别适用于不同的场景。 - **题目分析**: 本题问的是哪个类可以实现一次读入多个文件...

    2021-2022计算机二级等级考试试题及答案No.19915.docx

    21. Java中,SequenceInputStream类可以将多个InputStream对象合并为单个InputStream对象。答案:(SequenceInputStream)。 22. 对"出生日期"字段进行有效性规则设置,限制输入1988年9月10日以前的日期,规则应为`。...

    2021-2022计算机二级等级考试试题及答案No.18189.docx

    21. 空白处应填写与问题20相同的答案,即`SequenceInputStream`,用于合并多个`InputStream`。 这些知识点涵盖了计算机二级等级考试中可能遇到的基础知识,对于备考和提升计算机技能具有指导意义。

    JAVA IO流学习文档

    6. **SequenceInputStream**: 可以按顺序读取多个InputStream的流。 ##### 字符流 1. **Reader**: 字符输入流的基类。 2. **Writer**: 字符输出流的基类。 3. **FileReader/Writer**: 专门用于读写文件的字符流。 ...

    JAVA_IO详解_包括讲解IO中各种流及其用法.pdf

    SequenceInputStream可以把多个输入流当作一个连续的输入流来读取,使程序可以顺序地读取多个文件或数据源。 ObjectInputStream和ObjectOutputStream是用于对象序列化的流。它们可以读写Java对象的状态,实现了对象...

    彻底明白Java的IO系统

    此外,`PipedInputStream`用于线程间通信,`SequenceInputStream`可以合并多个InputStream。 - **OutputStream**:这类流用于写入数据,如`ByteArrayOutputStream`将数据写入内存缓冲区,`FileOutputStream`写入...

    2021-2022计算机二级等级考试试题及答案No.4943.docx

    24. **Java输入/输出流**:`FileInputStream`和`FileOutputStream`是用于处理单个文件的输入/输出流,而`BufferedReader`和`SequenceInputStream`通常用于读取多个源。`SequenceInputStream`可以连接多个输入流,...

    2021-2022计算机二级等级考试试题及答案No.9540.docx

    15. 合并InputStream:在Java中,可以使用`SequenceInputStream`类将多个InputStream对象合并为一个InputStream对象(选项:SequenceInputStream)。 16. 类修饰符:在定义类头时,可以使用的修饰符包括public、...

    JAVA-IO详解,方法和例子

    - 输入流:ByteArrayInputStream、StringBufferInputStream、FileInputStream、PipedInputStream和SequenceInputStream。 - 输出流:ByteArrayOutputStream、FileOutputStream、PipedOutputStream和...

    2021计算机二级测试Java试题.docx

    RandomAccessFile) 13、正确答案:(SequenceInputStream) 14、正确答案:(字节流、字符流) 15、正确答案:(Collections、Arrays) 16、正确答案:(put()、get(Object key)) 17、正确答案:(ListIterator) 18、正确...

    彻底明白 Java 语言中的IO系统

    * SequenceInputStream:把多个 InputStream 合并为一个 InputStream * ByteArrayOutputStream:把信息存入内存中的一个缓冲区中 * FileOutputStream:把信息存入文件中 * PipedOutputStream:实现了 pipe 的概念,...

    资料课件\JAVA 上课幻灯\

    `SequenceInputStream`:允许将多个输入流连接在一起,如同一个连续的流。 `PushbackInputStream`:提供了“回推”功能,可以将已读取但还未处理的字节放回流的开头。 9.2.3 字符流类 字符流主要涉及`Reader`和`...

Global site tag (gtag.js) - Google Analytics