一、InputStream
字节流的read方法,可以是以下方式:
read(byte[] b)
read(byte[] b, int off, int len)
1.1 FileInputStream
当一个文件是二进制数据的时候,使用FileInputStream进行读取,基本构造函数:
FileInputStream(File file)
FileInputStream(String name)
1.2 FilterInputStream
FilterInputStream作为一些其他字节流输入类的父类
1.2.1 BufferedInputStream
内部创建一个缓冲区,可以使读取更有效率:
BufferedInputStream(InputStream in)
1.2.2 DataInputStream
建立一个与机器底层无关的数据输入流,构造方法:
DataInputStream(InputStream in)
有众多读取方法,readBoolean()、readByte() 、readChar() 、readDouble() 、readFloat() 、readInt() 、readUTF() 等
另外这个类不是线程安全
1.2.3 PushbakInputStream
通过unread方法把数据复制,然后把数据放回数据流的头部,构造方法:
PushbackReader(Reader in)
1.3 ObjectInputStream
通常使用ObjectOutputStream写入的对象,使用ObjectInputStream读取,该对象必须是可序列化的
ObjectInputStream(InputStream in)
1.4 PipedInputStream
与字符流的类似,需要使用connect绑定PipedOutputStream
1.5 SequenceInputStream
合并输入流,可以把输入流放入容器中进行合并:
Vector<FileInputStream> v = new Vector<FileInputStream>();
v.add(new FileInputStream("c:\\1.txt"));
v.add(new FileInputStream("c:\\2.txt"));
v.add(new FileInputStream("c:\\3.txt"));
Enumeration<FileInputStream> en = v.elements();
SequenceInputStream sis = new SequenceInputStream(en);
也可以把两个输入流作为参数放入构造函数中
SequenceInputStream(InputStream s1, InputStream s2)
1.6 StringBufferInputStream