流是一组有序的数据序列,根据操作的类型,可以分为输入流和输出流两种。I/O(Input/Output,输入/输出)流提供了一条通道程序,可以使用这条通道把源中的字节序列送到目的地。
Java由数据流处理输入/输出模式,程序从指向源的输入流中读取源中的数据。源可以是文件、网络、压缩包或者其他数据源。
(输入模式)
输出流的指向是数据要到达的目的地,程序通过向输出流中写入数据把信息传递到目的地。输出流的目标可以是文件、网络、压缩包或者其他数据输出目标。
(输出模式)
Java语言定义了许多类专门负责各种方式的输入/输出,这些类都放在java.io包中。其中,所有输入流类都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类;而所有输出流都是抽象类OutputStream(字节输出流)或者抽象类Writer(字符输出流)的子类。
输入流
InputStream类
InputStream类的具体层次结构
1) FileInputStream把一个文件作为InputStream,实现对文件的读取操作
2) ByteArrayInputStream:把内存中的一个缓冲区作为InputStream使用
3) StringBufferInputStream:把一个String对象作为InputStream
4) PipedInputStream:实现了pipe的概念,主要在线程中使用
5) SequenceInputStream:把多个InputStream合并为一个InputStream
.............
下面是对该类中的一些方法的简要说明
read()方法:从输入流中读取数据的下一个字节。返回0——255范围内的int字节值。如果因为已经到达流末尾而没有可用的字节时,返回-1.
read(byte[]b)方法:从输入流中读入一定长度的字节,并以整数的形式返回字节数。
mark(int readlimit)方法:在输入流的当前位置放置一个标记,readlimit参数告知此输入流在标记位置失效之前