1、第第 9讲讲流式流式 I/O和文件和文件目目 的的 描述和使用描述和使用 java.io包的流式思想包的流式思想 构造文件和过滤器流,并恰当地使用它们构造文件和过滤器流,并恰当地使用它们 区别流与读者和作者,并进行合适的选择区别流与读者和作者,并进行合适的选择 考察并操作文件和目录考察并操作文件和目录 读、写和更新文本和数据文件读、写和更新文本和数据文件数据流数据流Java所有的所有的 I/O机制都是基于数据流的,机制都是基于数据流的,这些数据流表示了字符或者字节数据的这些数据流表示了字符或者字节数据的流动序列。流动序列。Java的的 I/O流提供了读写数据的标准方法流提供了读写数据的标准方法
2、。任何任何 Java中表示数据源的对象都会提供中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。以数据流的方式读写它的数据的方法。Java.io包包 Java.io是大多数面向数据流的输入是大多数面向数据流的输入 /输出类的主要软件包。输出类的主要软件包。 这个软件包包含了两个抽象类,这个软件包包含了两个抽象类,InputStream和和 OutputStream。所。所有其它面象数据流的输入有其它面象数据流的输入 /输出类都输出类都要扩展这两个基类。要扩展这两个基类。 import java.io.*数据流数据流 两种基本的流:输入流和输出流两种基本的流:输入流和输出流可以从输入流
3、读,不能对它写。要从输入流读取可以从输入流读,不能对它写。要从输入流读取字节,必须有一个与这个流相关联的字符源。字节,必须有一个与这个流相关联的字符源。 结点流结点流 ,即它们可以从一个特定的地方读写,例,即它们可以从一个特定的地方读写,例如磁盘或者一块内存。如磁盘或者一块内存。 过滤器流过滤器流 ,一个过滤器输入流是用一个到已存在,一个过滤器输入流是用一个到已存在的输入流的连接创建的。此后,当你试图从过滤的输入流的连接创建的。此后,当你试图从过滤输入流对象读时,它向你提供来自另一个输入流输入流对象读时,它向你提供来自另一个输入流对象的字符。对象的字符。InputStream(输入流输入流 )
4、 定义了定义了 Java流式字节输入模式的抽象类流式字节输入模式的抽象类。该类的所有方法在出错条件下引发一。该类的所有方法在出错条件下引发一个个 IOException 异常。异常。InputStream 定义的方法定义的方法 方法 描述int available( ) 返回当前可 读 的 输 入字 节 数void close( ) 关 闭输 入源。关 闭 之后的 读 取会 产 生 IOException异常void mark(int numBytes) 在 输 入流的当前点放置一个 标记 。 该 流在 读 取numBytes个字 节 前都保持有效int read( ) 如果下一个字 节 可
5、读则 返回一个整型,遇到文件尾 时 返回 -1int read(byte buffer ) 试图读 取 buffer.length个字 节 到 buffer中,并返回实际 成功 读 取的字 节 数。遇到文件尾 时 返回 -1int read(byte buffer ,int offset,int numBytes)试图读 取 buffer中从 bufferoffset开始的 numBytes个字 节 ,返回 实际读 取的字 节 数。遇到文件尾 时返回 -1void reset( ) 重新 设 置 输 入指 针 到先前 设 置的 标 志 处long skip(long numBytes) 忽略 numBytes个 输 入字 节 ,返回 实际 忽略的字 节数OutputStream(输出流输出流 ) 定义了定义了 Java流式字节输出模式的抽象类流式字节输出模式的抽象类。该类的所有方法在出错条件下引发一。该类的所有方法在出错条件下引发一个个 IOException 异常。异常。