Java的Stream, InputStream, OutStream整体把握

输入输出流,指的是数据从一个存储区域流到另外一个存储区域。

Java定义了两种类型的流,字节流和字符流。

-------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------------

字节流:处理字节的输入和输出。包括读写二进制数据等方面的内容。

字符流:处理字符的输入和输出。他采用的是Unicode编码,可以实现国际化。使用字符流的另外一个好处就是:字符流比字节流更有效率。

-------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------------

字节流,包含两个顶层抽象类:InputStreamOutputStream

任何有能力产生数据流(源)的java io对象就可以看作是一个InputStream对象,既然它能产生出数据,我们就可以将数据取出,java对封装的通用方法就read()方法了;
任何有能力接收数据源(流)的java io对象就可以看作是一个OutputStream对象,同样它能接收数据,我们就可以调用它的write()方法,来让它接收数据;

-------------------------------------------------------------------------------------------------------------------------

OutputStream
(1)输出数据
  void write(int b)往流中写一个字节b
  void write(byte b[])往流中写一个字节数组b
  void write(byte b[],int off,int len)把字节数组b中从下标off开始,长度为len的字节写入流中
(2)
  flush()刷空输出流,并输出所有被缓存的字节。由于某些流支持缓存功能,该方法将把缓存中所有内容强制输出到流中。
(3)关闭流
  close()流操作完毕后必须关闭。
------------------------------------------------------------------------------------------------------------------------
InputStream
(1)从流中读取数据
  int read() 读取一个字节,返回值为所读得字节
  int read(byte b[]) 读取多个字节,放置到字节数组b中,通常读取的字节数量为b的长度,返回值为实际独取的字节的数量。
  int read(byte b[] ,int off,int len)读取len个字节,放置到以下标off开始字节数组b中,返回值为实际读取的字节的数量。
  int available() 返回值为流中尚未读取的字节的数量。
  long skip(long n);读指针跳过n个字节不读,返回值为实际跳过的字节数量
(2)关闭流
  close() 流操作完毕后必须关闭
(3)使用输入流中的标记
  void mark(int readlimit)纪录当前指针的所在位置.readlimit表示读指针读出的readlimit个字节后所标记的指针位置才实效。
  void reset() 把读指针重新指向用mark方法所记录的位置
  boolean markSupported() 当前的流是否支持读指针的记录功能。
-----------------------------------------------------------------------------------------------------------------------

每个抽象类都有子类来实现具体的功能,处理不同的设备的输入和输出。比如

DataOutputStream, DataInputStream
FileOutputStream, FileInputStream

列举字节流的几个常用子类:

 

字节流类

功能简单介绍

DataInputStream

包含了读取Java标准数据类型的输入流

DataOutputStream

包含了写Java标准数据类型的输出流

ByteArrayInputStream

从字节数组读取的输入流

ByteArrayOutputStream

写入字节数组的输出流

FileInputStream

从文件读入的输入流

FileOutputStream

写入文件的输出流

PrintStream

包含最常见的Print()和Println()的输出流

PushbackInputStream

返回一个字节到输入流,主要用于编译器的实现

PipedInputStream

输出管道

PipedOutputStream

输入管道

SequenceInputStream

将n个输入流联合起来,一个接一个按一定顺序读取

RandomAccessFile

随机访问文件

BufferInputStream

缓冲输入流

BufferOutputStream

缓冲输出流

FilterInputStream

实现了InputStream Interface

FilterOutputStream

实现了OutputStream Interface

InputStream

抽象类,描述流的输入

OutputStream

抽象类,描述流的输入

-------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------------

 字符流,典型的以Writer和Reader来标识的:
FileWriter, FileReader
StringWriter, StringReader

posted on 2014-03-12 23:21  tirestay  阅读(2094)  评论(0)    收藏  举报

导航