第十章输入与输出.ppt
《第十章输入与输出.ppt》由会员分享,可在线阅读,更多相关《第十章输入与输出.ppt(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、JAVA语言程序设计语言程序设计第十章第十章 输入与输出输入与输出10.1输入输出类库输入输出类库 输入和输出是程序与用户之间沟通的桥梁,程序与用输入和输出是程序与用户之间沟通的桥梁,程序与用户进行信息交互的重要手段。户进行信息交互的重要手段。Java 提供了专用于输入输出提供了专用于输入输出功能的包功能的包java.io,其中包含,其中包含5个非常重要的类,所有与输个非常重要的类,所有与输入输出有关的类都继承了这入输出有关的类都继承了这5个类。它们是个类。它们是InputStream、OutputStream、Reader、Writer和和File。Java的输入输出是以流(的输入输出是以流
2、(stream)的方式进行处理的。流的方式进行处理的。流是在计算机的是在计算机的 输入、输出操作中流动的数据序列。输入、输出操作中流动的数据序列。Java 按流的单位分有位流(字节流)和字符流;按流动方向分按流的单位分有位流(字节流)和字符流;按流动方向分为输入流为输入流(input stream)和输出流和输出流(out stream)。输入输出流输入输出流程序程序输入流输出流键盘打印机显示器 数据数据流、程序、外设之间的关系流、程序、外设之间的关系输入流类输入流类InputStream和输出流和输出流OutputStream是两是两个最基本的输入输出抽象类,用于处理字节流。个最基本的输入输
3、出抽象类,用于处理字节流。Reader和和Writer提供了以字符流读取和写入字节流的方法。提供了以字符流读取和写入字节流的方法。分别由上述类对象生成相应的对象。分别由上述类对象生成相应的对象。InputStream 类InputStream类中包含了一套所有输入流都需要的方类中包含了一套所有输入流都需要的方法,可以完成最基本的从输入流读取数据的功能。法,可以完成最基本的从输入流读取数据的功能。当当java程序需要从外设中读入数据时,先创建一个适当程序需要从外设中读入数据时,先创建一个适当类型的输入流类对象来完成与外设的连接,然后再调用类型的输入流类对象来完成与外设的连接,然后再调用执行该新建
4、对象的特定方法,实现对相应外设的操作。执行该新建对象的特定方法,实现对相应外设的操作。InputStream 子类对象继承子类对象继承InputStream 类的如下方法类的如下方法read()方法、定位指针的方法、方法、定位指针的方法、close()方法。方法。1、read()方法方法Read方法是从输入流读入数据的方法,有两种不同的方法是从输入流读入数据的方法,有两种不同的read方法,其共同点只能逐字节的读取输入数据。以二进制的方法,其共同点只能逐字节的读取输入数据。以二进制的方式读取,而不能分解、重组和理解数据,使之变换、恢方式读取,而不能分解、重组和理解数据,使之变换、恢复到原来的有
5、意义的状态。定义如下:复到原来的有意义的状态。定义如下:public int read()每次执行时都从输入流的当前位置处读入一个字节的二进每次执行时都从输入流的当前位置处读入一个字节的二进制数据,此数作为低字节,高字节配全零,合成为一个制数据,此数作为低字节,高字节配全零,合成为一个16位整型量返回,若输入流当前位置无数据返回位整型量返回,若输入流当前位置无数据返回-1。public int read(byte b)从输入流当前位置连续读入多个字节,保存到数组从输入流当前位置连续读入多个字节,保存到数组b中,中,返回输入字节个数。返回输入字节个数。2、定位指针的方法、定位指针的方法每个流都有
6、一个指针,每次读入数据都是从指针位置开始进行。每个流都有一个指针,每次读入数据都是从指针位置开始进行。流在刚被创建时,指针位于流的第一个数据,以后每读入一个流在刚被创建时,指针位于流的第一个数据,以后每读入一个字节,指针后移一个字节位置,指向未被读取的下一个数据。字节,指针后移一个字节位置,指向未被读取的下一个数据。InputStream流中用来控制指针位置的方法有如下几个。流中用来控制指针位置的方法有如下几个。public long skip(long n);将指针从当前位置向后跳将指针从当前位置向后跳n个字节个字节public void mark();在指针位置做一个标记在指针位置做一个标
7、记public void reset();将指针移到标记位置将指针移到标记位置 3、close()方法方法当输入流使用完毕后,可以调用当输入流使用完毕后,可以调用close方法将其关闭,断开方法将其关闭,断开Java程序与程序与外设数据源的链接,释放此连接所占用的系统资源。定义方法如下:外设数据源的链接,释放此连接所占用的系统资源。定义方法如下:public void close()InputStream子类的继承关系子类的继承关系InputStream FileInputStream 对本地磁盘文件进行读写操作对本地磁盘文件进行读写操作 FilterInputStream 是抽象类是抽象类
8、DataInputStream 具备数据类型或格式转换具备数据类型或格式转换 BufferedInputStream 具备缓冲功能具备缓冲功能OutputStream 类 OutputStream类中包含所有输出流都要使用的方法。类中包含所有输出流都要使用的方法。当当java程序需要向某外设输出数据时,先要创建一个输出流程序需要向某外设输出数据时,先要创建一个输出流类对象,通过该对象实现与外设的连接,再利用类对象,通过该对象实现与外设的连接,再利用OutputStream类提供的方法将数据写入该外设中。类提供的方法将数据写入该外设中。OutputStream类是一个抽象类,不能直接创建类是一个
9、抽象类,不能直接创建OutputStream类对象,而应该创建它的某个子类的对象。类对象,而应该创建它的某个子类的对象。子类继承的方法有:子类继承的方法有:Write()方法、方法、flush()方法和方法和close()方法方法1、write()方法方法write()方法是向输出流写入数据的方法,有两种方法是向输出流写入数据的方法,有两种不同的方法,其共同点是只能逐字节的输出数不同的方法,其共同点是只能逐字节的输出数据,以二进制的方式写入,而不能对数据进行据,以二进制的方式写入,而不能对数据进行格式变换或类型转换。定义形式如下:格式变换或类型转换。定义形式如下:public void wri
10、te(int c);将参数将参数c的低字节写入输出流的低字节写入输出流public void write(char array);将字符数组将字符数组array中全部字符顺序写入到输出流中全部字符顺序写入到输出流2、flush()方法()方法Write()方法所写的数据并没有直接传输到外设上,而是暂方法所写的数据并没有直接传输到外设上,而是暂时存放在流的缓冲区中,当缓冲区的时存放在流的缓冲区中,当缓冲区的 数据积累到一定程度数据积累到一定程度时,才统一执行一次向外设写的操作。但有时,缓冲区中时,才统一执行一次向外设写的操作。但有时,缓冲区中的数据未满时就需要将其写到外设中,此时应使用的数据未满
11、时就需要将其写到外设中,此时应使用flush()方法强制清空缓冲区,并将缓冲区的现有数据写入外设。方法强制清空缓冲区,并将缓冲区的现有数据写入外设。public void flush();强制清空缓冲区强制清空缓冲区 3、Close()方法方法 当输出流使用完毕后,可以调用当输出流使用完毕后,可以调用close方法将其关闭,断方法将其关闭,断开开Java程序与外设数据源的连接,释放此连接所占用的资程序与外设数据源的连接,释放此连接所占用的资源。形式如下:源。形式如下:public void close();OutputStream子类的继承关系子类的继承关系OutputStream FileO
12、utputStream 对本地磁盘文件进行写入操作对本地磁盘文件进行写入操作 FilterOutputStream 是抽象类是抽象类 PrintEtream 提供流的格式化输出功能提供流的格式化输出功能 DataOutputStream 具备数据类型或格式转换具备数据类型或格式转换 BufferedOutputStream 具备缓冲功能具备缓冲功能Reader类Reader类用来以字符方式从流中读入数据。类用来以字符方式从流中读入数据。Reader类中包类中包含了一套所有字符输入流都需要的方法,可以完成最基本含了一套所有字符输入流都需要的方法,可以完成最基本的从字符输入流读取数据的功能。的从字
13、符输入流读取数据的功能。Reader是一个抽象类,所以实际应用中创建的对象是是一个抽象类,所以实际应用中创建的对象是Reader 某个子类的对象,通过该子类对象与外接数据源连接某个子类的对象,通过该子类对象与外接数据源连接。Reader子类继承子类继承Reader类的如下方法类的如下方法read()方法、定位指针方法和方法、定位指针方法和close()方法方法1、Read()方法方法Read()方法是从输入流读入数据的方法,有两种不同的方法是从输入流读入数据的方法,有两种不同的read方法,其共同点只能逐字节的读取输入数据。方法,其共同点只能逐字节的读取输入数据。public int read
14、();读一个字符读一个字符,并将它作为并将它作为int类型返回给调用方法的类型返回给调用方法的语句,若当前输入流没有数据则返回语句,若当前输入流没有数据则返回-1,如出现错误,抛出,如出现错误,抛出IOException类型异常类型异常public int read(char array);读多个字符,保存到读多个字符,保存到array数组中,返回数组中,返回读入读入 的字节数目的字节数目2定位指针方法定位指针方法与与InputStream流一样流一样Reader类中用来控制指针位置的方法类中用来控制指针位置的方法有如下几个。有如下几个。public long skip(long n);将指针
15、从当前位置向后跳将指针从当前位置向后跳n个字节个字节public void mark();在指针位置做一个标记在指针位置做一个标记public void reset();将指针移到标记位置将指针移到标记位置Reader BufferedReader InputStreamReader FileReader具备缓冲功能的字符输入流具备缓冲功能的字符输入流从字节输入流转换成字符输入流从字节输入流转换成字符输入流用于从文件中读取数据用于从文件中读取数据Reader子类子类的继承关系的继承关系 3、close()方法方法当输入流使用完毕后,可以调用当输入流使用完毕后,可以调用close方法将其关闭,断
16、开方法将其关闭,断开Java程序与程序与外设数据源的链接,释放此连接所占用的系统资源。定义方法如下:外设数据源的链接,释放此连接所占用的系统资源。定义方法如下:public void close()Writer类类Writer类用来以字符方式向输出流中写入数据。类用来以字符方式向输出流中写入数据。Writer类中包含了一套所有字符输出流都需要的方法,可以完类中包含了一套所有字符输出流都需要的方法,可以完成最基本的向字符输出流写入数据的功能。成最基本的向字符输出流写入数据的功能。Writer是一个抽象类,所以实际应用中创建的对象是是一个抽象类,所以实际应用中创建的对象是Writer 某个子类的对
17、象,通过该子类对象与外接数据源连接。某个子类的对象,通过该子类对象与外接数据源连接。Writer子类对象继承子类对象继承Writer类的如下方法类的如下方法write()方法、方法、flush()方法和方法和close()方法方法Writer子类的继承关系Writer PrintWriter 提供流的格式化输出功能提供流的格式化输出功能 BufferedWriter 提供字符流输出缓冲功能提供字符流输出缓冲功能 OutputStreamWriter 字符输出流转换成字节流字符输出流转换成字节流 FileWriter 向文件中读入字符流向文件中读入字符流public void write(int
18、 c);将参数将参数c对应的字符写入输出流对应的字符写入输出流public void write(char array);将字符数组将字符数组array中的全部中的全部字符顺序写如输出流字符顺序写如输出流public void flush();强制清空缓冲区强制清空缓冲区public void close();关闭输出流,断开关闭输出流,断开java程序与外设数据程序与外设数据源的连接,释放所占有的系统资源源的连接,释放所占有的系统资源10.2标准输入输出标准输入输出 为了减少程序开发人员需要频繁地建立输入输出流对为了减少程序开发人员需要频繁地建立输入输出流对象的工作量,而应用标准的输入输出设
19、备,象的工作量,而应用标准的输入输出设备,java系统预先系统预先定义好定义好3个流对象,分别表示标准输出设备、标准输入设备个流对象,分别表示标准输出设备、标准输入设备和标准错误设备。他们分别是和标准错误设备。他们分别是System.out,System.in,System.errSystem 类的所有属性都是静态类的所有属性都是静态static的,调用时以类名的,调用时以类名System为前缀。上述为前缀。上述3个流对象均为静态属性。个流对象均为静态属性。System.out和和System.err属于属于PrintStream类对象类对象 对应外设为屏幕对应外设为屏幕 System.in属
20、于属于InputStream类对象对应外设为键盘类对象对应外设为键盘/从键盘输入字符,然后在屏幕上显示输入结果从键盘输入字符,然后在屏幕上显示输入结果import java.io.*;public class Standard10_1 public static void main(String args)throws IOException int/*char*/c;System.out.println(输入任一字符输入任一字符);c=/*(char)*/System.in.read();System.out.println(输入的字符是输入的字符是:+c);使用使用read()方法时,应该
21、对方法时,应该对IOException类异常进行捕获或类异常进行捕获或抛出,由于抛出,由于IOException类类在在java.io 包中定义因此程序第包中定义因此程序第一句需要引用一句需要引用java.io包包/例例10_1中改为一次输入字符串,单个输出字符中改为一次输入字符串,单个输出字符import java.io.IOException;public class StandardIn10_2 public static void main(String args)throwsIOException char c;System.out.println(“输入字符串输入字符串”);c=(
22、char)System.in.read();System.out.println(“输入的第一个字符是:输入的第一个字符是:”+c);c=(char)System.in.read();System.out.println(“输入的第二个字符是:输入的第二个字符是:”+c);c=(char)System.in.read();System.out.println(“输入的第三个字符是:输入的第三个字符是:”+c);c=(char)System.in.read();程序运行程序运行屏幕显示屏幕显示输入字符串输入字符串输入输入Student只输出只输出 s t u剩下剩下4个字符个字符待后继的待后继的
23、read()继续读取继续读取/输出字符串、浮点数、整数、布尔量,然后在屏幕上显示输入结果输出字符串、浮点数、整数、布尔量,然后在屏幕上显示输入结果Readline是BufferedReader的方法,从键盘输入字符串import java.io.*;public class Standard10_3 public static void main(String args)throws IOException InputStreamReader iin=new InputStreamReader(System.in);BufferedReader bin=new BufferedReader(i
24、in);String s;float f;int i=0;boolean b;System.out.println(输入任一字符串输入任一字符串);s=bin.readLine();System.out.println(输入浮点数输入浮点数);f=Float.parseFloat(bin.readLine();System.out.println(输入输入);i=Integer.parseInt(bin.readLine();System.out.println(输入输入);b=new Boolean(bin.readLine().booleanValue();System.out.print
25、ln(输入的字符串:输入的字符串:+s);System.out.println(输入的浮点数:输入的浮点数:+f);System.out.println(输入的整数:输入的整数:+i);System.out.println(输入的布尔量:输入的布尔量:+b);输入任一字符串输入任一字符串 abc 输入浮点数输入浮点数 234.5输入整数输入整数 34输入布尔量输入布尔量 true输入的字符串:输入的字符串:abc输入的浮点数:输入的浮点数:234.5输入的整数:输入的整数:34输入的布尔量:输入的布尔量:true输输出出输输入入方方 法法返回值类型返回值类型返回值返回值Boolean(“tru
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第十 输入 输出
限制150内