JAVA开发 葵花宝典 15

上传人:woxinch****an2018 文档编号:56880314 上传时间:2018-10-16 格式:PPT 页数:38 大小:302.50KB
返回 下载 相关 举报
JAVA开发 葵花宝典 15_第1页
第1页 / 共38页
JAVA开发 葵花宝典 15_第2页
第2页 / 共38页
JAVA开发 葵花宝典 15_第3页
第3页 / 共38页
JAVA开发 葵花宝典 15_第4页
第4页 / 共38页
JAVA开发 葵花宝典 15_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《JAVA开发 葵花宝典 15》由会员分享,可在线阅读,更多相关《JAVA开发 葵花宝典 15(38页珍藏版)》请在金锄头文库上搜索。

1、第15章 Java输入与输出(I/O),本章将介绍输入和输出,输入和输出是一个包括了很多类的统称。其中有字符输入和输出类、字节的输入和输出类、文件的输入和输出类、随机访问类、对象序列化输入和输出类等等。输出和输入在整个应用程序中尤为重要,如果一个应用程序没有输入和输出,那么就不能给使用者提供所需要的信息。输入和输出也是整个应用程序为用户提供的接口,让用户能够清楚此应用程序的目的是什么、要做到什么等等。,15.1 输入与输出的重要性,输入就是平时看到的“input”,输出就是平时看到的“output”,输入和输出就是某个方向流动的数据流。有关输入和输出,在Java类库中有一个与之相对应的类库Ja

2、va.io包。在Java.io包中,提供了众多的有关输入和输出的类。 那么应用程序为什么需要输入和输出呢?(具体内容请参照本书),15.2 Java有哪些重要的输入输出类,Java程序类库包含大量的输入输出类,提供不同情况下的不同功能。本章将详细讲述这些输入输出类。需要注意的是,在编写程序过程中,如果要使用输入输出类的方法和属性值,就需要引入Java.io类。下面是一些经常使用的输入输出类。(具体内容请参照本书),15.3 文件或目录信息的处理-File,File类提供了与文件或目录相关的信息。下面是这个类的构造器 Public File(String pathname):它的用处是使用指定的

3、路径,创建一个File对象。 Public File(String parent,string child):使用指定的路径和字符串创建一个File类。 Public File(File parent,String child):使用一个File类的对象parent与字符串创建一个新的File对象。(具体内容请参照本书),15.3.1 File常用的操作方法,File类常用的方法函数很多,并提供不同的文件操作功能,这些方法如表15.1所示。(具体内容请参照本书),15.3.2 文件处理方法的应用,下面将针对这些方法,举出有关File类的实例,让读者能够熟悉它们的用法。(具体内容请参照本书),1

4、5.3.3 文件和目录的完全处理,以上的实例很简单,主要学习函数的用法,下面再看一个稍微复杂的程序。(具体内容请参照本书),15.4 读取数据的媒介之一流(Stream),流是什么?读取数据与流有什么关系?本节将通过理论和大量的实例,展示数据的读取与流之间不可分隔的关系。,15.4.1 什么是流,流就是数据流向某个对象,并且到达这个对象的过程。要真正理解流的概念,并不是很容易,为了能让读者熟练地应用流来编写程序,先这样理解:数据流先流向对象,然后从对象中将这个流读出来。,15.4.2 什么是输入流和输出流,输入流就是从目标程序中,将数据以流的形式复制到前面说的流对象中,然后,再从流对象中将数据

5、读取出来。输出流就是将数据以流的形式复制到流对象中去,再从这些流对象中取出流,写入到目标中。(具体内容请参照本书),15.4.3 字节输入流及输出流,数据流对象分为两大类:一大类是负责输入的输入流对象,另一类是负责输出的输出流对象。这两大类的父类是“inputstream”类和“outputstream”类。其实这两个类都是抽象类,通过前面对抽象和多态的学习,应该知道抽象类不能创建对象,但是可以通过其子类来创建对象,这一点在多态中已经详细讲述过。(具体内容请参照本书),15.4.4 使用文件字节输入流读取文件,“FileInputStream”类,与前面说过的“InputStream”类有点相

6、似,其实“FileInputStream”类就是“InputStream”的子类,并且其不是一个抽象类。这样,程序员就可以利用“FileInputStream”类的对象来使用前面的方法。(具体内容请参照本书),15.4.5 使用文件字节输出流输出文件,“FileOutputStream”类与超类“OutputStream”类有点相似,其实“FileOutputStream”类就是“OutputStream”的子类,并且不是一个抽象类,这样就可以利用“FileOutputStream”类的对象来使用前面的方法。(具体内容请参照本书),15.5 多字节数据读取类Filter类,Filter类是一个

7、非常有用的类,它能够进行多字节数据的读取,本节将会详细讲述这个类的应用。,15.5.1 Filter流的概念,前面讲述的那些类,都是处理以字节为单位的数据,如果读者不是很清楚,可以查看前面“inputstream”和“outputstream”两个类的方法函数中的参数。前面的讲述中,有的是一个字节一个字节的处理数据,有的是一个字节数组一个字节数组的处理数据,这样显然是不够的,因为以后还会遇到处理字符型数据、整型数据、浮点型数据的情况。(具体内容请参照本书),15.5.2 处理字节类型外的文件流,本节主要介绍“FilterInputStream”类,图15.4描述了这个类的用处。(具体内容请参照

8、本书),15.5.3 字节类型外的文件输出,本节主要介绍“FilterOutputStream”类,图15.5描述了这个类的用处。(具体内容请参照本书),15.5.4 增强的多字节输出流DataOutput,通过查看Filter类的两个部分,可以发现它们都继承“InputStream”和“OutputStream”,并且在这两个子类中,没有新的方法函数,只有一些简单的“write”和“read”函数。这些函数不能处理整型、字符串型的数据。为了解决这个问题,引进了“DataInput”接口和“DataOutput”接口,同时 “DataInputStream”类和“DataOutputStrea

9、m”类分别实现了以上两个接口,并继承了“FilterInputStream”类和“FilterOutputStream”类。下面详细讲述“DataOutputStream”类。(具体内容请参照本书),15.5.5 增强的多字节输入流DataInput,“DataInputStream”类实现了“DataInput”接口,所以它可以使用这个接口所提供的方法,这个接口的常用方法如下所示。(具体内容请参照本书),15.6 读取数据的媒介之二字符流(Character streams),什么是字符流?如何使用字符流的类来处理数据?带着这些疑问,通读本节。本节的重点是学习使用字符流处理数据,并且结合了大

10、量的实例进行演示。,15.6.1 字符流的概念,前面学过的流都是以字节为单位处理数据,称为字节流。本节将介绍一种可以一次性处理两个字节的流,称为字符流。字符流分为两个类:“Reader”类和“Writer”类,“Reader”类负责字符输入工作,而“Writer”类负责字符输出工作。,15.6.2 抽象字符输入流Reader类的使用,这个类是个抽象类,其中的方法没有被实现,所以无法使用。另外,由于它是一个抽象类,所以无法创建对象,根据前面的介绍,如果是抽象类,可以使用其子类来覆盖其抽象方法,从而创建对象。(具体内容请参照本书),15.6.3 抽象字符输出流Writer类的使用,Writer类也

11、是抽象类,其中的方法没有被实现。“Writer”类的常用方法: Public int write(int c):将字符c写入输出流。 Public int read(char cbuf):将字符数组中的字符写入输出流。 Public void write(string str):将字符串str写入输出流。,15.6.4 读取带缓存的BufferedReader字符流,通过上面的叙述知道,“Reader”类本身不可能创建对象,因为它是抽象类,那么可以通过子类覆盖这个抽象类中的抽象方法,这称为非抽象类。非抽象类就可以创建对象了。这个抽象类可以形成两个类:“inputstreamreader”和“b

12、ufferedreader”两个类。“inputstreamreader”类比较简单,通过一个实例来掌握它该如何使用,实例代码如下。(具体内容请参照本书),15.6.5 带缓存的字符输出流BufferedWriter类,“Writer”类本身不能创建对象,因为它是抽象类,那么可通过子类来覆盖这个抽象类中的抽象方法,然后就可以创建对象。由这个抽象类可以形成两个类:“outputstreamwriter”和“Bufferedwriter”两个类。下面通过一个实例,学习“outputstreamwriter”的使用方法。(具体内容请参照本书),15.6.6 字符输入流FileReader类和File

13、Writer类的使用,“FileReader”类和“FileWriter”类分别是“InputStreamReader”类和“OutputstreamWriter”类的子类,它们提供将字符数据直接写入文件,或从文件中直接读出字符数据的简便方法。下面看一个有关这两个类的实例,此实例由上面的程序段修改而成,读者可通过对比,来衡量哪种方法更好。(具体内容请参照本书),15.6.7 如何用标准输入流System.in来获取数据,“System.in”用于从标准键盘输入设备读入数据。下面举一个实例,让读者有个更清晰的认识。(具体内容请参照本书),15.6.8 打印输入流PrintWriter类与Prin

14、tStream类的区别,“PrintStream”与“PrintWriter”类都是打印输出流,它们在许多方面提供了相似的功能。它们将各种基本类型的数据输出至字符串流中,并提供了自动刷新功能。这两个类的不同点,也是在自动刷新功能的设定上。(具体内容请参照本书),15.6.9 随机文件访问RandomAccessFile类的使用,“RandomAccessFile”类就是随机文件访问类。所谓的随机文件访问,就是指可以读写任意位置数据的文件,如何访问任意位置的数据呢?通过一个被称为文件指针的东西,通过移动它,来达到随机访问的目的。(具体内容请参照本书),15.7 利用对象序列化控制输入输出,前面讲

15、述了如何控制基本数据的输入输出,本节将讲述如何输入输出对象数据。对象数据是很复杂的,那么如何将他们输入到文本中呢?又如何从文本中将其读出来?例如一个数组如果采用前面所说的方式去输入输出,那将是一个复杂的过程。再例如一个类,如何将类中的一些数据输入或者输出?这些都涉及到一个概念,就是利用对象序列化。本节将详细的介绍什么是对象序列化,如何利用对象序列化来控制输入流和输出流。,15.7.1 什么是对象序列化,什么是对象序列化呢?简单的说,就是将对象写入流,而序列化解体则指从流中获取数据后,重构对象的过程。Java的对象可以分为可序列化对象和不可序列化对象,从说明文档中,可以看到只有实现了“Seria

16、lizable”接口的对象才是可序列化对象。,15.7.2 基本数据和对象数据读写ObjectInput接口与ObjectOutput接口,“ObjectInput”接口与“ObjectOutput”接口分别继承了“DataInput”和“DataOutput”接口,提供用于读写基本数据和对象数据的方法。“ObjectInput”提供了“readObject()”方法,此方法用于将对象从流中读出。“ObjectOutput”提供了“writeObject()”方法,此方法用于将对象写入流中。因为“ObjectInput”与“ObjectOutput”皆为接口,所以不能创建对象,那么就只有使用实

17、现了这两个接口的“ObjectInputStream”类和“ObjectOutputStream”类来创建对象。下面将详细的讲述如何使用“ObjectInputStream”类和“ObjectOutputStream”类来操作数据。,15.7.3 对象序列化处理ObjectOutputStream类的使用,“ObjectOutputStream”类继承了“OutputStream”类,同时实现了“ObjectOutput”接口,提供将对象序列化并写入流中的功能。此类的构造器如下: Public objectoutputstream (outputstream out) 下面通过一个实例,来看看如何使用“ObjectOutputStream”类。(具体内容请参照本书),

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

当前位置:首页 > 中学教育 > 高中教育

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