第11章输入输出流及文件 与外部设备和其他计算机进行交流的输入输 出操作,尤其是对磁盘的文件操作,是计算 机程序重要而必备的功能,任何计算机语 都必须对输入输出提供支持。Java语言也不 例外,它的输入输出类库中包含了丰富的系 统工具一已定义好的用于不同情况的输入输 出类;利用它们,Java程序可以很方便地实 现多种输入输出操作和复杂的文件与目录管 理
第11章 输入输出流及文件 与外部设备和其他计算机进行交流的输入输 出操作,尤其是对磁盘的文件操作,是计算 机程序重要而必备的功能,任何计算机语言 都必须对输入输出提供支持。Java语言也不 例外,它的输入输出类库中包含了丰富的系 统工具─已定义好的用于不同情况的输入输 出类;利用它们,Java程序可以很方便地实 现多种输入输出操作和复杂的文件与目录管 理
本章要点 Java输入输出类库 ■字符的输入与输出 数据输入输出流 ■]ava程序的文件与目录理
本章要点 ◼Java输入输出类库 ◼字符的输入与输出 ◼数据输入输出流 ◼Java程序的文件与目录理
第五讲输入/输出处理 IO流概述 字节流 字节流的基类 对象流 文件流 管道流 过滤流 内存读写流 标准流 顺序输入流 字符流 文件操作随机访问文件
第五讲 输入/输出处理 I/O流概述 字节流 字节流的基类 文件流 过滤流 标准流 字符流 文件操作/随机访问文件 对象流 管道流 内存读写流 顺序输入流
111Java输入输出类库一流的概念 大部分程序都需要输入/输出处理,比如从键盘读取数 据、向屏幕中输出数据、从文件中读或者向文件中写数 据、在一个网络连接上进行读写操作等。在]ava中,把 这些不同类型的输入、输出源抽象为流( Stream),而 其中输入或输出的数据则称为数据流( Data stream), 用统一的接口来表示,从而使程序设计简单明了。 文件,字符串 文件 存储区 文件 起 程序 程序 终 网络端点 数据流 终端点 网络端点
11.1 Java输入输出类库—流的概念 大部分程序都需要输入/输出处理,比如从键盘读取数 据、向屏幕中输出数据、从文件中读或者向文件中写数 据、在一个网络连接上进行读写操作等。在Java中,把 这些不同类型的输入、输出源抽象为流(Stream),而 其中输入或输出的数据则称为数据流(Data Stream), 用统一的接口来表示,从而使程序设计简单明了。 文件 程序 终端 文件 程序 网络端点 数据流 起 点 终 点 网络端点 文件,字符串 存储区
111Java输入输出类库一流的概念 在JDK1.1之前, Java. Io包中的流只有普通的字节流(以 byte为基本处理单位的流),这种流对于以16位的 Unicode码表示的字符流处理很不方便。 从JDK1.1开始, Java. IO包中加入了专门用于字符流处 理的类(以 Reader和 Writer为基础派生的一系列类)。 另外,为了使对象的状态能够方便地永久保存下来 JDK1.1以后的 JJavaI0包中提供了以字节流为基础的用于对 象的永久化保存状态的机制——对象流(通过实现 objectinput和 Objectoutput接口)
在JDK1.1之前,java.io包中的流只有普通的字节流(以 byte为基本处理单位的流),这种流对于以16位的 Unicode码表示的字符流处理很不方便。 从JDK1.1开始, java.io包中加入了专门用于字符流处 理的类(以Reader和Writer为基础派生的一系列类)。 另外,为了使对象的状态能够方便地永久保存下来, JDK1.1以后的java.io包中提供了以字节流为基础的用于对 象的永久化保存状态的机制——对象流(通过实现 ObjectInput和ObjectOutput接口)。 11.1 Java输入输出类库—流的概念
111Java输入输出类库—基本输入输出流类 流一般分为输入流( Input Stream)和输出流( Output Stream)两类,但这种划分并不是绝对的。比如一个文件, 当向其中写数据时,它就是一个输出流;当从其中读取数 据时,它就是一个输入流。当然,键盘只是一个输入流, 而屏幕则只是一个输出流。 在Java开发环境中,主要是由包 Java. O中提供的一系列 的类和接口来实现输入/输出处理。标准输入/输出处理则 是由包 java. lang中提供的类来处理的,但这些类又都是从 包 Java.IO中的类继承而来。 输入流:数据提供者,可从中读取数据出来 输出流:数据接收者,可往其中写数据
流一般分为输入流(Input Stream)和输出流(Output Stream)两类,但这种划分并不是绝对的。比如一个文件, 当向其中写数据时,它就是一个输出流;当从其中读取数 据时,它就是一个输入流。当然,键盘只是一个输入流, 而屏幕则只是一个输出流。 在Java开发环境中,主要是由包java.io中提供的一系列 的类和接口来实现输入/输出处理。标准输入/输出处理则 是由包java.lang中提供的类来处理的,但这些类又都是从 包java.io中的类继承而来。 输入流:数据提供者,可从中读取数据出来 输出流:数据接收者,可往其中写数据 11.1 Java输入输出类库—基本输入输出流类
111Java输入输出类库—基本输入输出流类 Inputstream类 Inputstream中包含一套所有输入流都需要的方法,可以完 成最基本的自输入流读入数据的功能 当Java程序需要从外设读入数据时,它应该创建一个适当 类型的输入流类的对象来完成与该外设,如键盘、磁盘文 件或网络套接字等的连接。然后再调用执行这个新创建的 流类对象的特定方法,实现对相应外设的输入操作。需要 说明的是,由于 Inputstream是不能被实例化的抽象类,所 以在实际程序中创建的输入流一般都是 Inputstrean的某个 子类的对象,由它来实现与外设数据源的连接
◼InputStream类 InputStream中包含一套所有输入流都需要的方法,可以完 成最基本的自输入流读入数据的功能。 当Java程序需要从外设读入数据时,它应该创建一个适当 类型的输入流类的对象来完成与该外设,如键盘、磁盘文 件或网络套接字等的连接。然后再调用执行这个新创建的 流类对象的特定方法,实现对相应外设的输入操作。需要 说明的是,由于InputStream是不能被实例化的抽象类,所 以在实际程序中创建的输入流一般都是InputStream的某个 子类的对象,由它来实现与外设数据源的连接。 11.1 Java输入输出类库—基本输入输出流类
111Java输入输出类库—基本输入输出流类 Inputstrean类常用方法 方法 简要说明 读入数据方 int reado 从流中读取一个字节的数据 int read(by te bl 将流中某些字节数据读入到一个字节数组中 int read( by te bll, int off, int len))从流中读取指定长度的数据放入到一个字节数组中 定位输入位置指针方法 long skip(long n) 在流中跳过n个字节 void marko 在流的当前位置设置一个标记 oid reset 返回上一个标记 关闭流方法 void close 当输入操作完毕时,关闭流
◼InputStream类常用方法 11.1 Java输入输出类库—基本输入输出流类 类型 方法 简要说明 读入数据方法 int read() 从流中读取一个字节的数据 int read(byte b[]) 将流中某些字节数据读入到一个字节数组中 int read(byte b[],int off,int len) 从流中读取指定长度的数据放入到一个字节数组中 定位输入位置指针方法 long skip(long n) 在流中跳过n个字节 void mark() 在流的当前位置设置一个标记 void reset() 返回上一个标记 关闭流方法 void close() 当输入操作完毕时,关闭流
111Java输入输出类库—基本输入输出流类 ■ Outputstream类 Outputstream中包含一套所有输出流都要使用的方法。 读入操作一样,当Java程序需要向某外设,如屏幕、磁盘 文件或另一计算杋输出数据时,应该创建一个新的输出流 对象来完成与该外设的连接,然后利用 Outputstream提供 的wte(方法将数据顺序写入到这个外设上
◼OutputStream类 OutputStream中包含一套所有输出流都要使用的方法。与 读入操作一样,当Java程序需要向某外设,如屏幕、磁盘 文件或另一计算机输出数据时,应该创建一个新的输出流 对象来完成与该外设的连接,然后利用OutputStream提供 的write()方法将数据顺序写入到这个外设上。 11.1 Java输入输出类库—基本输入输出流类
111Java输入输出类库—基本输入输出流类 ■ Outputstream类常用方法 简要说明 类型 Void write(int b) 将参数的低位字节写入到输出流 Void write(byte bD) 将字节数组b中的全部字节顺序写入到输出流 写入数据 Void flush 数据暂时放在缓冲区中,等积累到一定数量,统一一次向外设写入。 当输出操作完毕时,关闭流 关闭流方法
◼OutputStream类常用方法 11.1 Java输入输出类库—基本输入输出流类 类型 方法 简要说明 写入数据方法 Void write(int b) 将参数的低位字节写入到输出流 Void write(byte b[]) 将字节数组b[]中的全部字节顺序写入到输出流 Void flush() 数据暂时放在缓冲区中,等积累到一定数量,统一一次向外设写入。 关闭流方法 void close() 当输出操作完毕时,关闭流