欢迎来到天天文库
浏览记录
ID:58883081
大小:208.50 KB
页数:124页
时间:2020-09-30
《java程序设计教程第8章ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第8章输入/输出流和文件操作8.1流和文件的概念8.2字节输入/输出流类8.3字符流类8.4文件操作类本章小结习题8.1流和文件的概念流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件、内存或网络连接。类似地,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候可以想象数据在其中“流”动一样,如图8-1所示。 文件操作也是所有编程语言都必不可少的一部分。而在Java中,文件和流的应用是息息相关的。实际上,对文件的操作就是对流的操作。图8-1Java流示意图8.1.1操作系统中的文件和目录概念文件是由一些具有永
2、久存储及特定顺序的字节组成的一个有序的、具有名称的集合。操作系统使用与系统相关的路径名字符串来命名文件和目录。字符串路径名可以是绝对路径名,也可以是相对路径名。绝对路径名是完整的路径名,不需要任何其他信息就可以定位自身表示的文件。相反,相对路径名必须使用来自其他路径名的信息进行解释。和其他编程语言一样,在默认情况下,Java会根据当前用户目录来分析相对路径名。在不同的操作系统中,路径名的表示方法也会有所不同。 在UNIX/Linux操作系统下,路径分隔符为“/”。如果是绝对路径,则路径名字符串应该拥有一个前缀,前缀符仍用“/”表示,如“/Program/Java
3、/jdk/bin”,可表示一个绝对路径。相对路径的表示方法也差不多,只是不带前缀符而已,如当前为Java目录时,则可直接用相对路径“jdk/bin”来访问bin目录。在MicrosoftWindows操作系统下,路径分隔符为“”。 如果是绝对路径,则路径名字符串应包含盘符的路径名的前缀,由驱动器名和一个“:”组成,如“E:Javajdkbin”。同样,在表示相对路径名时无须加前缀,如“jdkbin”。需要注意的是,在Java中,“”为转义字符,所以要用“”转义来表示它本身,即用“\”来表示“”。于是在Java程序中路径分隔符均须写成“\”,如“E
4、:\Java\jdk\bin”和“jdk\bin”。 Java语言中,用来表示文件的是File类。可用File(Stringpath)或File(Stringpath,Stringname)来构造一个文件对象,具体用法请参照8.4.1节。8.1.2流的概念计算机中的流其实是一种信息的转换。它是一种有序流,因此相对于某一对象,通常把对象接收外界的信息输入(Input)称为输入流,相应地从对象向外输出(Output)的信息称为输出流,合称为输入/输出流(I/OStreams)。对象间进行信息或者数据的交换时,总是先将对象或数据转换为某种形式的流,再通过流的传
5、输到达目的对象后将流转换为对象数据。所以,可以把流看做是一种数据的载体,通过它可以实现数据交换和传输。 在Java中,流仍是一个类的对象,很多文件的输入/输出操作都以此类的成员方法的方式来提供。8.1.3Java的输入/输出流概述Java中的流分为两种,一种是字节流,另一种是字符流,每种流又分为输入和输出两种,所以分别由四个抽象类来表示:InputStream、OutputStream、Reader、Writer。Java中其他多种多样变化的流均是由它们派生出来的。Java流类关系图如图8-2所示。 InputStream和OutputStream在早期的J
6、ava版本中就已经存在了,它们是基于字节流的,而基于字符流的Reader和Writer是后来加入作为补充的。图8-2所示的层次图是Java类库中一个基本的层次体系。(1)字节流:从InputStream和OutputStream派生出来的一系列类。这类流以字节(byte)为基本处理单位。 (2)字符流:从Reader和Writer派生出的一系列类,这类流以16位Unicode码表示的字符为基本处理单位。 在这四个抽象类中,InputStream和Reader定义了完全相同的接口: intread() intread(charcbuf[]) int
7、read(charcbuf[],intoffset,intlength) voidclose()而OutputStream和Writer也是如此: intwrite(intc) intwrite(charcbuf[]) intwrite(charcbuf[],intoffset,intlength) voidflush() voidclose() 这些方法都是一些最基本的方法。对于这几种方法的具体用法,后面示例中会针对不同的类进行说明。图8-2Java流类关系图(1) read()方法。当输入流被打开后,就可以从里面读取信息了。读取信
此文档下载收益归作者所有