欢迎来到天天文库
浏览记录
ID:39969047
大小:304.00 KB
页数:29页
时间:2019-07-16
《java语言程序设计教程电子教案--第10章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、[Return]第10章输入与输出10.1Java输入/输出基础10.2读取控制台输入10.3向控制台写输出10.4流类10.5文件的读写在Java语言中,输入与输出完全基于“流”这个概念。Java输入输出的流式接口为复杂而繁重的I/O编程任务提供了一个简洁的抽象。本章将对这方面的内容作详细介绍。[Return]10.1Java输入/输出基础10.1.1流的概念10.1.2字节流和字符流10.1.3预定义流10.1.4Java输入/输出类和接口关于Java的输入/输出问题我们在前面的程序代码中一般都接触过,只是没有系统地进行讨论。本节将对Java的输
2、入/输出问题作一个概述。10.1.1流的概念我们知道,多数程序在不获取外部数据的情况下不能顺利完成目标。数据从一个输入源获得,程序的结果被送到输出目的地。在Java中,这些源和目的地被广泛地定义。例如一个网络连接器,内存缓冲区或磁盘文件可以被Java输入/输出类熟练地操作。尽管从物理意义上很难说明,这些外设都由相同的抽象体流(stream)来处理。流是一个生产或消费信息的逻辑实体,它通过Java输入/输出系统与物理设备相连。尽管与之相连的实际物理设备各不相同,但是所有的流都以同样的方式运转。Java程序通过流来完成输入/输出,它是生产或消费信息的抽象
3、。流通过Java的输入/输出系统与物理设备链接。尽管与它们链接的物理设备不尽相同,但是所有流的行为具有同样的方式。这样,相同的输入/输出类和方法适用于所有类型的外部设备。这意味着一个输入流能够抽象多种不同类型的输入:从磁盘文件,从键盘或从网络套接字。同样,一个输出流可以输出到控制台,磁盘文件或相连的网络。流是处理输入/输出的一个洁净的方法,例如它不需要代码理解键盘和网络的不同。Java中流的实现是基于java.io包定义的类层次结构的。[Return]10.1.2字节流和字符流在Java2中,定义了两种类型的流:字节类和字符类。字节流(bytestr
4、eam)为处理字节的输入和输出提供了方便的方法。例如,使用字节流读取或书写二进制数据。字符流(characterstream)为字符的输入和输出处理提供了方便。这两种流采用了统一的编码标准,因而可以国际化。当然,在某些场合字符流比字节流更为有效。在Java的早期版本(Java1.0)中不包括字符流,因此所有的输入和输出都是以字节为单位的。后来,Java1.1中加入了字符流,某些字节形式的类和方法不被推荐使用。这也是为什么没用字符流的老代码在适当的地方需要更新的原因。需要说明的是,在最底层,所有的输入/输出都是字节形式的。基于字符的流只是为处理字符提供
5、方便有效的方法。下面对字节流和字符流分别作简要介绍。字节流由两个类层次结构定义。在顶层有两个抽象类:InputStream和OutputStream。每个抽象类都有多个具体的子类,这些子类对不同的外设进行处理,例如磁盘文件、网络连接、甚至是内存缓冲区。各种字节流类及其相关说明见教材P235页。1.字节流类字符流类由两个类层次结构定义。顶层有两个抽象类:Reader和Writer。这些抽象类处理统一编码的字符流。在Java中这些类含有多个具体的子类详见教材P235~236页。2.字符流类[Return]10.1.3预定义流我们已经知道,所有的Java程
6、序运行时自动导入java.lang包,这个包定义了一个名为System的类,该类封装了运行时环境的多个方面。例如,使用它的某些方法,能获得当前时间和与系统有关的不同属性。System同时还包含有3个预定义的流变量:in、out和err。这些成员在System中是被定义成public和static型的,即意味着它们可以不引用特定的System对象而被用于程序的其他部分。System.out是标准的输出流,在默认情况下它是一个控制台;System.in是标准输入,默认情况下指的是键盘;System.err指的是标准错误流,它默认是控制台。需要指出的是,这
7、些流可以重定向到任何兼容的输入/输出设备。System.in是InputStream的对象;System.out和System.err是PrintStream的对象。尽管它们是用来读写外设字符的,它们都是字节流。如果编程人员愿意,可以用基于字符的流来包装它们。在前面章节中多次用到过System.out,我们可以同样的方式使用System.err。System.in的使用则稍微复杂一些。[Return]10.1.4Java输入/输出类和接口在Java2中,java.io包定义的输入/输出类见教材P236~237页。不难发现,其中包含了前面所介绍的字节流
8、和字符流。其中,ObjectInputStream.GetField和ObjectOutputStream.
此文档下载收益归作者所有