艺达家纺柔丝被:java IO(2)字节流和字符流.wps

来源:百度文库 编辑:九乡新闻网 时间:2024/04/30 00:09:39

输入输出流

IO流的三种分类方式

  1.按流的方向分为:输入流和输出流

  2.按流的数据单位不同分为:字节流和字符流

3.按流的功能不同分为:节点流和处理流

(节点流:从特定的地方读写的流类,例如:磁盘或一块内存区域。

  处理流:使用节点流作为输入或输出。过滤流是使用一个已经存在的输入流或输出流 连接创建的。

IO流的四大抽象类:

字符流:Reader  Writer

字节流:InputStream OutputStream

InputStream 抽象类

三个基本的读方法

abstract int read()

 读取一个字节数据,并返回读到的数据,如果返回-1,表示读到了输入流的末尾。

int read(byte[] b)

 将数据读入一个字节数组,同时返回实际读取的字节数。如果返回-1,表示读到了输入流的末尾。

int read(byte[] b, int off, int len)

 将数据读入一个字节数组,同时返回实际读取的字节数。如果返回-1,表示读到了输入流的末尾。off指定在数组b中存放数据的起始偏移位置;len指定读取的最大字节数。

其它方法

long skip(long n)

 在输入流中跳过n个字节,并返回实际跳过的字节数。

int available()

 返回在不发生阻塞的情况下,可读取的字节数。

void close()

 关闭输入流,释放和这个流相关的系统资源。

void mark(int readlimit)

 在输入流的当前位置放置一个标记,如果读取的字节数多于readlimit设置的值,则流忽略这个标记。

void reset()

 返回到上一个标记。

boolean markSupported()

 测试当前流是否支持mark和reset方法。如果支持,返回true,否则返回false。

 

InputStream的作用是标志那些从不同起源地产生输入的类。这些起源地包括(每个都有一个相关的InputStream子类):

(1) 字节数组(ByteArrayInputStream,关闭 ByteArrayInputStream 无效。此类中的方法在关闭此流后仍可被调用 

(2) String对象(StringBufferInputStream,已过时)

(3) 文件(FileInputStream,用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用 FileReader

(4) “管道”,它的工作原理与现实生活中的管道类似:将一些东西置入一端,它们在另一端出来。(PipedInputStream)

 (5) 一系列其他流,以便我们将其统一收集到单独一个流内。(SequenceInputStream)

(6)序列化的对象(ObjectInputStream)

(6) 其他起源地,如Internet连接等

除此以外,FilterInputStream也属于InputStream的一种类型。子类包括BufferedInputStream、PushbackInputStream、DataInputStream

OutputStream抽象类

三个基本的读方法

abstract void write(int b)

 往输出流中写入一个字节。

void write(byte[] b)

 往输出流中写入数组b中的所有字节。

void write(byte[] b, int off, int len)

 往输出流中写入数组b中从偏移量off开始的len个字节的数据。

其它方法

void flush()

 刷新输出流,强制缓冲区中的输出字节被写出。

void close()

 关闭输出流,释放和这个流相关的系统资源。

 

Reader