欢迎来到天天文库
浏览记录
ID:50325267
大小:245.50 KB
页数:27页
时间:2020-03-08
《Java面向对象程序设计 教学课件 张亦辉 冯华 胡洁 第6章 输入.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章输入/输出和异常处理在实际的应用开发中经常会遇到数据输入/输出的需求,这样的需求在Java中使用I/O流来实现。本章首先介绍Java中用于输入/输出的I/O流,然后介绍与输入/输出密切相关的序列化机制和文件管理,最后介绍Java中的异常处理,它用于保证代码的容错性。6.1I/O流一个好的程序语言,完善的输入输出功能是必不可少的。在Java中将不同来源和目标的数据统一抽象为流,通过对流对象的操作来完成I/O功能。Java中的流很灵活,可以连接到各种不同的源或目标,如磁盘文件、键盘(输入设备)、显示器(输出设备)、网络等。6.1.1流的层次Java中所有的I/O都是通过流来
2、实现的,可以将流理解为连接到数据目标或源的管道,可以通过连接到源的流从源当中读取数据,或通过连接到目标的流向目标中写入数据。根据流的方向可以将其分为两类:输入流和输出流。用户可以从输入流中读取信息,向输出流中写信息。根据流处理数据类型的不同也可以将其分为两类:字节流与字符流。下面主要从类的层次来介绍I/O流。Java中I/O流是由java.io包来实现的,其中的类大致分为输入和输出两大部分。在java.io包最顶层包含子类较多的两个类是InputStream和OutputStream。图分别表示java.io包中的输入流类和输出流类的层次。这两个类均为抽象类,也就是说不能创建
3、它们的实例对象,必须创建子类之后才能建立对象。java.io包中的很多类都是从这两个类继承而来的,因此,这些子类有很多相同的方法。6.1.2输入流和输出流前面介绍过,Java的I/O类库分成输入和输出两大部分。所有InputStream和Reader的派生类都有一个继承下来的,能读取单个或byte数组的read()方法。同理,所有OutputStream和Writer的派生类都有一个能写入单个或byte数组的write()方法。但通常情况下,这些方法不是直接应用的,而是供其他类使用,而其他类会提供一些更实用的接口。Java的设计者们遵循这样的原则:让所有与输入相关的类去继承I
4、nputStream,所有与输出相关的类继承OutputStream。6.1.3字节流和字符流根据流处理数据类型的不同也可以将其分为两类:字节流与字符流,下面列出了这两种流的不同之处。字节流:字节流以字节为基本单位来处理数据的输入/输出,一般都用于对二进制数据的读写,如声音、图像等。字符流:字符流以字符为基本单位来处理数据的输入和输出,一般都用于对文本类型数据的读写,如文本文件、网络中发送的文本信息等。虽然文本数据也可以看作二进制数据,但一般采用字符流处理文本数据比采用字节流效率更高,也更方便。6.1.4随机存取文件流前面介绍的都是顺序访问的流,在Java还有一种支持随机访问
5、的流RandomAccessFile。这个类的实例支持同时进行的读/写操作。一个随机存取文件好比存储在文件系统中的一个大“数组”。该“数组”有一个文件指针,输入操作从该指针所指示的地方开始读取数据,每读一个字节,指针后移一个字节。如果一个随机存取文件以读/写方式创建,也可对其进行输出(写)操作。输出操作也从文件指针所指的地方写字节,并将指针置于所写字节之后。当输出操作超过了“数组”的末尾,将导致文件的扩大。文件指针可用getFilePointer()方法读取,用seek()方法设置。6.2I/O流的使用Java的流式输入和输出,是通过使用前面介绍的这些I/O流类来实现的。本节
6、将具体介绍如何使用这些流类,包括标准的I/O输出、基本的I/O流、过滤流、文件的随机读写和流的分割。6.2.1标准的I/O流下面首先介绍标准的I/O流的使用方法。在Java语言中,键盘用stdin表示,监视器用stdout表示。它们均被封装在System类的类变量in和out中,分别对应于System.in和System.out。事实上,类变量in和out分别属于类InputStream和PrintStream,只是由于InputStream和PrintStream不能用new()方法直接创建,所以才在System类中声明为如下的3个类变量。publicstaticInput
7、StreaminpublicstaticPrintStreamoutpublicstaticPrintStreamerr6.2.2基本的I/O流基本的I/O流主要包括InputStream类、OutputStream类、PipedInputStream类和PipedOutputStream类以及SequenceInputStream类,下面分别加以介绍。1.InputStream类InputStream类是以字节为单位的输入流。数据来源可以是键盘,也可以是诸如Internet这样的网络环境。这个类可作为
此文档下载收益归作者所有