Java 程序设计 教学课件 ppt 作者 杨厚群 主编 chap11

上传人:E**** 文档编号:89424813 上传时间:2019-05-25 格式:PPT 页数:39 大小:154KB
返回 下载 相关 举报
Java 程序设计 教学课件 ppt 作者 杨厚群 主编 chap11_第1页
第1页 / 共39页
Java 程序设计 教学课件 ppt 作者 杨厚群 主编 chap11_第2页
第2页 / 共39页
Java 程序设计 教学课件 ppt 作者 杨厚群 主编 chap11_第3页
第3页 / 共39页
Java 程序设计 教学课件 ppt 作者 杨厚群 主编 chap11_第4页
第4页 / 共39页
Java 程序设计 教学课件 ppt 作者 杨厚群 主编 chap11_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《Java 程序设计 教学课件 ppt 作者 杨厚群 主编 chap11》由会员分享,可在线阅读,更多相关《Java 程序设计 教学课件 ppt 作者 杨厚群 主编 chap11(39页珍藏版)》请在金锄头文库上搜索。

1、第11章 输入输出流及文件,与外部设备和其他计算机进行交流的输入输出操作,尤其是对磁盘的文件操作,是计算机程序重要而必备的功能,任何计算机语言都必须对输入输出提供支持。Java语言也不例外,它的输入输出类库中包含了丰富的系统工具已定义好的用于不同情况的输入输出类;利用它们,Java程序可以很方便地实现多种输入输出操作和复杂的文件与目录管理。,本章要点,Java输入输出类库 字符的输入与输出 数据输入输出流 Java程序的文件与目录理,第五讲 输入/输出处理,11.1 Java输入输出类库流的概念,大部分程序都需要输入/输出处理,比如从键盘读取数据、向屏幕中输出数据、从文件中读或者向文件中写数据

2、、在一个网络连接上进行读写操作等。在Java中,把这些不同类型的输入、输出源抽象为流(Stream),而其中输入或输出的数据则称为数据流(Data Stream),用统一的接口来表示,从而使程序设计简单明了。,在JDK1.1之前,java.io包中的流只有普通的字节流(以byte为基本处理单位的流),这种流对于以16位的Unicode码表示的字符流处理很不方便。 从JDK1.1开始, java.io包中加入了专门用于字符流处理的类(以Reader和Writer为基础派生的一系列类)。 另外,为了使对象的状态能够方便地永久保存下来, JDK1.1以后的java.io包中提供了以字节流为基础的用于

3、对象的永久化保存状态的机制对象流(通过实现ObjectInput和ObjectOutput接口)。,11.1 Java输入输出类库流的概念,流一般分为输入流(Input Stream)和输出流(Output Stream)两类,但这种划分并不是绝对的。比如一个文件,当向其中写数据时,它就是一个输出流;当从其中读取数据时,它就是一个输入流。当然,键盘只是一个输入流,而屏幕则只是一个输出流。 在Java开发环境中,主要是由包java.io中提供的一系列的类和接口来实现输入/输出处理。标准输入/输出处理则是由包java.lang中提供的类来处理的,但这些类又都是从包java.io中的类继承而来。 输

4、入流:数据提供者,可从中读取数据出来 输出流:数据接收者,可往其中写数据,11.1 Java输入输出类库基本输入输出流类,InputStream类 InputStream中包含一套所有输入流都需要的方法,可以完成最基本的自输入流读入数据的功能。 当Java程序需要从外设读入数据时,它应该创建一个适当类型的输入流类的对象来完成与该外设,如键盘、磁盘文件或网络套接字等的连接。然后再调用执行这个新创建的流类对象的特定方法,实现对相应外设的输入操作。需要说明的是,由于InputStream是不能被实例化的抽象类,所以在实际程序中创建的输入流一般都是InputStream的某个子类的对象,由它来实现与外

5、设数据源的连接。,11.1 Java输入输出类库基本输入输出流类,11.1 Java输入输出类库基本输入输出流类,InputStream类常用方法,OutputStream类 OutputStream中包含一套所有输出流都要使用的方法。与读入操作一样,当Java程序需要向某外设,如屏幕、磁盘文件或另一计算机输出数据时,应该创建一个新的输出流对象来完成与该外设的连接,然后利用OutputStream提供的write()方法将数据顺序写入到这个外设上。,11.1 Java输入输出类库基本输入输出流类,OutputStream类常用方法,11.1 Java输入输出类库基本输入输出流类,11.1 Ja

6、va输入输出类库其他输入输出流类,常用的输入输出流如下表,当Java程序需要与外设等外界数据源做输入、输出的数据交换时,它需要首先创建一个输入或输出类的对象来完成对这个数据源的连接。 计算机系统都有默认的标准输入设备和标准输出设备。对一般的系统,标准输入通常是键盘,标准输出通常是显示器。Java程序使用字符界面与系统标准输入、输出间进行数据通信,即从键盘输入数据,或向显示器输出数据,是十分常见的操作。为此,Java系统事先定义好两个流对象,分别与系统的标准输入和标准输出相联系,它们是System.in和System.out。,11.1 Java输入输出类库标准输入输出,标准输入 Java的标准

7、输入System.in是InputStream类的对象,当程序中需要从键盘输入数据的时候,只需调用System.in的read()方法即可。在使用System.in.read()方法读取数据时,需要注意以下4点:,11.1 Java输入输出类库标准输入输出,(1) System.in.read()语句必须包含在try块中,且try块后面应该有一个可接收IOException例外的catch块。 (2)执行System.in.read()方法将从键盘缓冲区读取一个字节的数据,然而返回的却是16位的整型量,需要注意的是只有这个整型量的低位字节是真正输入的数据,其高位字节是全零。 (3)System

8、.in.read()只能从键盘读取二进制的数据,而不能是其他类型的数据。 (4)当键盘缓冲区中没有未被读取的数据时,执行System.in.read()将导致系统转入阻塞状态。在阻塞状态下,当前流程将停留在上述语句位置且整个程序被挂起,等待用户输入一个键盘数据后,才能继续运行下去;所以程序中有时利用System.in.read()语句来达到暂时保留屏幕的目的。,标准输出 Java的标准输出System.out是打印输出流PrintStream类的对象。PrintStream是过滤输出流类FilterOutputStream的一个子类,其中定义了向屏幕输送不同类型数据的方法print()和pri

9、ntln()。 println()方法有多种重载形式。它的作用是向屏幕输出其参数指定的变量或对象,然后再换行,使光标停留显示在屏幕下一行第一个字符的位置。如果println()参数为空,则将输出一个空行。,11.1 Java输入输出类库标准输入输出,标准输出 println()方法可输出多种不同类型的变量或对象,包括boolean,double,float,int,long类型的变量及Object类的对象。由于Java中规定子类对象作为实际参数可以与父类对象类型的变量及Object类的对象。由于Java中规定子类对象作为实际参数可以与父类对象的形式参数匹配,而Object类又是所有Java类的

10、父类,所以println()方法实际可以通过重载实现对所有类对象的屏幕输出。 print()方法的重载情况与println()方法完全一样,也可以实现屏幕上不同类型的变量和对象的操作。不同的是,print()方法输出对象后并不附带一个回车,下一次输出时,显示在同一行。,11.1 Java输入输出类库标准输入输出,11.2 字符的输入与输出,按处理数据的类型,流可以分为字符流与字节流,它们处理的信息的基本单位分别是字符和字节。当我们从文件中读取一段文本,该文件可能是ASCII格式的字符,也可能是Unicode格式的字符。如果是Unicode格式的字符,那以字节为单位处理就比较麻烦。为了解决这个问

11、题,Java提供了一套流过滤器,用于处理不同字符编码之间的差别。它们是从Reader和Writer类派生的。字符输入用的流为Reader,字符输出用的流为Writer。,在JDK1.1之前,java.io包中的流只有普通的字节流(以byte为基本处理单位的流),这种流对于以16位的Unicode码表示的字符流处理很不方便。从JDK1.1开始, java.io包中加入了专门用于字符流处理的类,它们是以Reader和Writer为基础派生的一系列类。 同类InputStream和OutputStream一样,Reader和Writer也是抽象类,只提供了一系列用于字符流处理的接口。它们的方法与类I

12、nputStream和OutputStream类似,只不过其中的参数换成字符或字符数组。 字节流中类DataInputStream的readLine方法,可以以字节形式读入,以Unicode形式输出(String readLine())。,11.2 字符的输入与输出,void close() void mark(int readAheadLimit) boolean markSupported() : int read() int read(char cbuf) int read(char cbuf, int off, int len) boolean ready() void reset()

13、 long skip(long n),11.2 字符的输入与输出基类:Reader,11.2 字符的输入与输出基类:Writer,void close() void flush() void write(char cbuf) void write(char cbuf, int off, int len) void write(int c) void write(String str) void write(String str, int off, int len),11.2 字符的输入与输出字符流 (InputStreamReader和OutputStreamWriter),InputStre

14、amReader和OutputStreamWriter是java.io包中用于处理字符流的最基本的类,用来在字节流和字符流之间作为中介:从字节输入流读入字节,并按编码规范转换为字符;往字节输出流写字符时先将字符按编码规范转换为字节。使用这两者进行字符处理时,在构造方法中应指定一定的平台规范,以便把以字节方式表示的流转换为特定平台上的字符表示。 InputStreamReader(InputStream in); /缺省规范 InputStreamReader(InputStream in, String enc); /指定规范enc OutputStreamWriter(OutputStrea

15、m out); /缺省规范 OutputStreamWriter(OutputStream out, String enc); /指定规范enc,如果读取的字符流不是来自本地时(比如网上某处与本地编码方式不同的机器),那么在构造字符输入流时就不能简单地使用缺省编码规范,而应该指定一种统一的编码规范“ISO 8859_1”,这是一种映射到ASCII码的编码方式,能够在不同平台之间正确转换字符。 InputStreamReader ir = new InputStreamReader( is, “8859_1” );,11.2 字符的输入与输出字符流 (InputStreamReader和Outp

16、utStreamWriter),11.2 字符的输入与输出缓存流 (BufferedReader和BufferedWriter),同样的,为了提高字符流处理的效率,java.io中也提供了缓冲流BufferedReader和BufferedWriter。其构造方法与BufferedInputStream和BufferedOutputStream相类似。另外,除了read()和write()方法外,它还提供了整行字符处理方法: public String readLine(): BufferedReader的方法,从输入流中读取一行字符,行结束标志为n、r或两者一起。 public void newLine(): BufferedWriter的方法,向输出流中写入一个行结束标志,它不是简单的换行符n或r,而是系统定义的行隔离标志(line separator)。,11.2 字符的输入与输出其它字符流,11.3 数据输入输出流,数据输入输出流DataInputSt

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号