Java学习之IO流(序列流--SequenceInputStream)

SequenceInputStream表示其他输入流的逻辑串联。
它从输入流的有序集合开始,从第一个开始读取,直到到达文件末尾,然后从第二个开始读取,依此类推,直到在最后一个包含的输入流中到达文件末尾

构造函数

  SequenceInputStream?(InputStream s1, InputStream s2)

  SequenceInputStream?(Enumeration<? extends InputStream> e)

实例:

 1     //将1.txt,2.txt,3.txt文件合并到一个文件中
 2     /*
 3      * 方式一、Vector集合是可行的,但效率低
 4      */
 5     /* Vector<FileInputStream> vector=new Vector<FileInputStream>();
 6     vector.add(new FileInputStream("1.txt"));
 7     vector.add(new FileInputStream("2.txt"));
 8     vector.add(new FileInputStream("3.txt"));
 9     Enumeration<FileInputStream> en=vector.elements();
10     SequenceInputStream ss=new SequenceInputStream(en); */
11
12     /*
13      * 方式二、使用ArrayList集合效率高
14      * 使用集合工具类Collections.enumeration方法将ArrayList集合转成Enumeration<FileInputStream>型对象
15      */
16
17     ArrayList<FileInputStream> arr=new ArrayList<FileInputStream>();
18
19     arr.add(new FileInputStream("1.txt"));
20     arr.add(new FileInputStream("2.txt"));
21     arr.add(new FileInputStream("3.txt"));
22     SequenceInputStream ss1=new SequenceInputStream(Collections.enumeration(arr));
23     /*
24      * Collections.enumeration(arr)的实现原理:
25      *
26      * Enumeration API note:The functionality of this interface is duplicated by the Iterator interface
27      * 翻译:该接口的功能被Iterator接口复制
28      *
29      * final Iterator<FileInputStream> it=arr.iterator();
30      * SequenceInputStream ss1=new SequenceInputStream(new Enumeration<InputStream>() {
31                 @Override
32                 public boolean hasMoreElements() {
33
34                 return it.hasNext();
35                 }
36
37                 @Override
38                 public InputStream nextElement() {
39
40                 return it.next();
41                 }
42         });
43      */
44     byte[] buff=new byte[1024];
45     FileOutputStream out=new FileOutputStream("4.txt");
46     int len=0;
47     while((len=ss1.read(buff))!=-1) {
48         out.write(buff,0,len);
49     }
50     out.close();
51
52     ss1.close();
53     

文件切割实例:

 1     public static void splitFile(File file) throws IOException {
 2     // 用读取流关联文件
 3     FileInputStream fis = new FileInputStream(file);
 4
 5     // 定义一个1M的缓冲区
 6     byte[] buf = new byte[SIZE];
 7
 8     // 创建目的
 9     FileOutputStream fos = null;
10
11     int len = 0;
12     int count = 1;
13     File dir = new File("partfiles");
14
15     if (!dir.exists()) {
16         dir.mkdirs();
17     }
18
19     while ((len = fis.read(buf)) != -1) {
20         fos = new FileOutputStream(new File(dir, (count++) + ".part"));
21         fos.write(buf,0,len);
22     }
23     fos.close();
24     fis.close();
25     }

原文地址:https://www.cnblogs.com/WarBlog/p/12141611.html

时间: 2024-10-10 05:04:42

Java学习之IO流(序列流--SequenceInputStream)的相关文章

JAVA学习第五十四课 — IO流(八)打印流 &amp; 序列流

一.综合练习-文件清单列表 获取指定目录下,指定扩展名的文件(含子目录),并将这些文件的绝对路径写到一个文本文件中.也就是建立一个指定扩展名的文件列表 1.深度遍历 2.过滤器->容器 3.写入文件 import java.util.List; import java.io.*; import java.util.ArrayList; public class Main { public static void main(String[] args) throws IOException { F

Java学习日记-----IO流

1.java.io包下 File类:java程序中的此类的一个对象,就对应着一个文件或网络中的一个资源. Flie file1 = new File("D:\\io\\hello.txt"); File file2 = new File("D:\\IO\\io1"); >1. File既可以表示一个文件也可以表示一个文件目录 >2.   File的对象是与平台无关的 >3. File类针对于文件或文件目录,只能进行新建.删除.重命名.上层目录等等操

Java学习之IO流

转载链接:https://blog.csdn.net/zhaoyanjun6/article/details/54292148 Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作. IO流的分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 字符流和字节流 字符流的由来: 因为数据编码的不同,而有了

java学习之路--I/O流

java基础学习总结--流 一.JAVA流式输入/输出原理 流是用来读写数据的,java有一个类叫File,它封装的是文件的文件名,只是内存里面的一个对象,真正的文件是在硬盘上的一块空间,在这个文件里面存放着各种各样的数据,我们想读文件里面的数据怎么办呢?是通过一个流的方式来读,咱们要想从程序读数据,对于计算机来说,无论读什么类型的数据都是以010101101010这样的形式读取的.怎么把文件里面的数据读出来呢?你可以把文件想象成一个小桶,文件就是一个桶,文件里面的数据就相当于是这个桶里面的水,

Java学习笔记38(字符流)

字符输出流:Writer类:使用时候需要它的子类 局限性:只能写文本文件,无法写其他文件 方法: package demo; import java.io.FileWriter; import java.io.IOException; public class WriterDemo { public static void main(String[] args) throws IOException { FileWriter fw = new FileWriter("d:\\java.txt&q

021.11 IO流 序列流

序列流:SequenceInputStream特点:流对象有序排列解决问题:将多个输入流合并成一个输入流,将多个源合并成一个源,对于多个源的操作会变简单. 构造函数参数就是输入流,一初始化就合并了多个流. public static void main(String[] args) throws IOException { //获取枚举,Vector有,但是效率低,使用ArrayList ArrayList<FileInputStream> al = new ArrayList<File

java学习笔记 --- IO(3)

1.FileReader:读取字符流,默认GBK public class CharStreamDemo { public static void main(String[] args) throws IOException { //给文件中写中文 writeCNText(); //读取文件中的中文 readCNText(); } //读取中文 public static void readCNText() throws IOException { FileReader fr = new Fil

Java学习之==&gt;IO文件操作体系

一.概述 在整个 Java.io 中最重要的就是5个类和一个接口.5个类指的是 File.InputStream.OutputStream.Reader.Writer,一个接口指的是Serializable.掌握了这些IO的核心操作那么对于Java中的IO体系也就有了一个初步的认识了. File(文件类):主要用来描述文件或目录的属性,例如:文件大小,修改文件名,删除文件,判断文件所在路径等. InputStream(字节输入流):抽象类,基于字节的输入操作,是所有输入流的父类.定义了所有输入流

java学习之IO字符流

1 package com.io; 2 3 import java.io.*; 4 /** 5 * 文件字符流的读取 6 * @author ganhang 7 * 8 */ 9 public class FileReaderDemo { 10 public static void read(){ 11 File file =new File("1.txt"); 12 try { 13 FileReader fr=new FileReader(file); 14 StringBuffe