IO_1

IO流类(1)

InputStream字节输入流

AudioInputStream

音频输入流是具有指定音频格式和长度的输入流。长度用示例帧表示,不用字节表示。提供几种方法,用于从流读取一定数量的字节,或未指定数量的字节。音频输入流跟踪所读取的最后一个字节。可以跳过任意数量的字节以到达稍后的读取位置。音频输入流可支持标记。设置标记时,会记住当前位置,以便可以稍后返回到该位置。

ByteArrayInputStream

ByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取的字节。内部计数器跟踪 read 方法要提供的下一个字节。关闭 ByteArrayInputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException。

FileInputStream

FileInputStream 从文件系统中的某个文件中获得输入字节。哪些文件可用取决于主机环境。FileInputStream 用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用 FileReader。

FilterInputStream

FilterInputStream 包含其他一些输入流,它将这些流用作其基本数据源,它可以直接传输数据或提供一些额外的功能。FilterInputStream 类本身只是简单地重写那些将所有请求传递给所包含输入流的 InputStream 的所有方法。FilterInputStream 的子类可进一步重写这些方法中的一些方法,并且还可以提供一些额外的方法和字段。

ObjectInputStream

ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化。
只有支持 java.io.Serializable 或 java.io.Externalizable 接口的对象才能从流读取。

PipedInputStream

管道输入流应该连接到管道输出流;管道输入流提供要写入管道输出流的所有数据字节。通常,数据由某个线程从 PipedInputStream 对象读取,并由其他线程将其写入到相应的 PipedOutputStream。不建议对这两个对象尝试使用单个线程,因为这样可能死锁线程。管道输入流包含一个缓冲区,可在缓冲区限定的范围内将读操作和写操作分离开。如果向连接管道输出流提供数据字节的线程不再存在,则认为该管道已损坏。

SequenceInputStream

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

StringBufferInputStream

已弃用此类不会将字符正确转换为字节。 从JDK 1.1开始,从字符串创建流的首选方法是通过StringReader类。
该类允许应用程序创建一个输入流,其中读取的字节由字符串的内容提供。 应用程序还可以通过使用ByteArrayInputStream从字节数组读取字节。只有字符串中每个字符的低8位被该类使用。

InputStream

org.omg.CORBA.portable.InputStream(略)
InputStream是用于从CDR元数据流读取IDL类型的Java API。 ORB使用这些方法解组IDL类型,并从Anys中提取IDL类型。

写个demo玩玩

package xxl.io.test;

import java.io.*;
import java.util.Vector;

public class Test7 {
    public static void main(String[] args) {
        InputStream inputStream = null;
        InputStream inputStream2= null;
        InputStream inputStream3 = null;
        BufferedOutputStream bos=null;
        try {

            inputStream=new FileInputStream(new File("E:/CloudMusic/打上花火.mp3"));
            inputStream2=new FileInputStream(new File("E:/CloudMusic/童话镇.mp3"));
            inputStream3=new FileInputStream(new File("E:/CloudMusic/水面の満月.mp3"));

            Vector vector=new Vector<InputStream>();

            vector.addElement(inputStream3);
            vector.addElement(inputStream2);
            vector.addElement(inputStream);
            SequenceInputStream stream=new SequenceInputStream(vector.elements());

            bos = new BufferedOutputStream(
                    new FileOutputStream("E:/Test/Test2/_0048.mp3"));
            byte[] bytes=new byte[1024];
            int len=0;
            while((len=stream.read(bytes))!=-1){
                bos.write(bytes,0,len);
            }
            bos.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            close(inputStream);
            close(inputStream2);
            close(inputStream3);
            if (bos!=null){
                try {
                    bos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    private static void close(InputStream inputStream) {
        if (inputStream!=null){
            try {
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值