教学课件第九章IO流

上传人:工**** 文档编号:571062202 上传时间:2024-08-08 格式:PPT 页数:34 大小:472KB
返回 下载 相关 举报
教学课件第九章IO流_第1页
第1页 / 共34页
教学课件第九章IO流_第2页
第2页 / 共34页
教学课件第九章IO流_第3页
第3页 / 共34页
教学课件第九章IO流_第4页
第4页 / 共34页
教学课件第九章IO流_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《教学课件第九章IO流》由会员分享,可在线阅读,更多相关《教学课件第九章IO流(34页珍藏版)》请在金锄头文库上搜索。

1、PPT模板下载:/moban/ 行业PPT模板:/hangye/ 节日PPT模板:/jieri/ PPT素材下载:/sucai/PPT背景图片:/beijing/ PPT图表下载:/tubiao/ 优秀PPT下载:/xiazai/ PPT教程: /powerpoint/ Word教程: /word/ Excel教程:/excel/ 资料下载:/ziliao/ PPT课件下载:/kejian/ 范文下载:/fanwen/ 试卷下载:/shiti/ 教案下载:/jiaoan/ 字体下载:/ziti/ 教学课件第九章IO流JavaJava程序设计基础程序设计基础第九章第九章 IO流流9.2 文件读写

2、文件读写9.1 流的概念流的概念9.3 过滤流和节点流过滤流和节点流9.4 RandomAccessFile类类9.1 流的概念流的概念v流概念的理解流概念的理解v流的分流的分类按流动的方向分为输入流和输出流按流动的数据类型分为字符流和字节流按流的建立方式和工作原理分为节点流和过滤流9.1 流的概念(流的概念(续续)v字字节流流字节流提供了对字节进行输入输出处理的方法。按照传输的方向字节流可以分为InputStream和OutputStream。其中InputStream是所有输入字节流的父类,OutputStream是所有输出字节流的父类。在InputStream和OutputStream中

3、定义了输入字节流和输出字节流最基本的方法,他们是抽象类。9.1 流的概念(流的概念(续续)v输输入字入字节节流的流的类层类层次次图图9.1 流的概念(流的概念(续续)v输输出字出字节节流的流的类层类层次次图图9.1 流的概念(流的概念(续续)v字符流字符流字符流提供了对字符进行输入输出处理的方法。字节流与字符流主要的区别是他们的处理方式。所有的字节流都是基于字节对数据进行处理,而实际使用中很多情况我们处理的数据是文本字符,所以Java提供了基于字符处理的字符流。9.1 流的概念(流的概念(续续)按照传输的方向字符流可以分为Reader和Writer。其中Reader是所有输入字符流的父类,Wr

4、iter是所有输出字符流的父类。在Reader和Writer中定义了输入字符流和输出字符流最基本的方法。9.1 流的概念(流的概念(续续)v输输入字符流的入字符流的类层类层次次图图9.1 流的概念(流的概念(续续)v输输出字符流的出字符流的类层类层次次图图9.1 流的概念(流的概念(续续)v预定定义流流Java程序默认导入java.lang包,这个包中有一个System类,这个类包含三个预定义静态常量,分别是in、out和err。System.in是标准输入流,默认设备是键盘。System.out是标准输出流,默认设备是控制台。System.err是标准错误流,默认设备是控制台。9.2 文件文

5、件读读写写vFile类Java中的File类指文件和目录的集合。Java语言中通过File类来建立与磁盘文件的联系。File类主要用来获取文件或者目录的信息,File类的对象本身不提供对文件的处理功能,要想对文件实现读写操作需要使用输入输出流。9.2 文件文件读读写(写(续续)v注意:注意:Java能正确处理UNIX和Windows/DOS约定路径分隔符。如果在Windows版本的Java下用斜线(/),路径处理依然正确。记住,如果你用Windows/DOS使用反斜线()的约定,你需要在字符串内使用它的转义序列()。Java约定是用UNIX和URL风格的斜线来作路径分隔符。9.2 文件文件读读

6、写(写(续续)vFileInputStreamFileInputStream是InputStream类的子类。常用的构造方法如下:FileInputStream(String name)使用指定的文件名name创建一个FileInputStream的对象,如果文件不存在会产生FileNotFoundException。FileInputStream(File file) 使用指定的文件对象来创建一个FileInputStream的对象,如果文件不存在会产生FileNotFoundException。9.2 文件文件读读写(写(续续)下面的例子创建了两个使用同样磁盘文件且各含一个上述构造方法的F

7、ileInputStream对象:FileInputStreamf1=newFileInputStream(hello.txt)Filef=newFile(hello.txt);FileInputStreamf2=newFileInputStream(f);尽管第一个构造方法可能更常用到,第二个构造方法允许在把文件赋给输入流之前用File对象的方法更进一步检查文件,例如判断文件是否存在。9.2 文件文件读读写(写(续续)FileInputStream的常用方法:intread()如果下一个字节可读则返回一个整型,遇到文件尾时返回-1intread(bytebuffer)试图读取buffer.l

8、ength个字节到buffer中,并返回实际成功读取的字节数。遇到文件尾时返回-1intread(bytebuffer,intoffset,intnumBytes)试图读取buffer中从bufferoffset开始的numBytes个字节,返回实际读取的字节数。遇到文件尾时返回-1voidclose()关闭输入源。关闭之后的读取会产生IOException异常9.2 文件文件读读写(写(续续)vFileOutputStreamFileOutputStream是OutputStream类的子类。常用的构造方法如下:FileOutputStream(String name) 使用指定的文件名na

9、me创建一个FileInputStream的对象。FileOutputStream(File file) 使用指定的文件对象来创建一个FileInputStream的对象。FileOutputStream的创建不依赖于文件是否存在。在创建对象时FileOutputStream在打开输出文件之前创建它。9.2 文件文件读读写(写(续续)FileOutputStream的常用方法:void close( )关闭输出流。关闭后的写操作会产生IOException异常void flush( )刷新输出缓冲区void write(int b)向输出流写入单个字节。注意参数是一个整型数,它允许你不必把参数

10、转换成字节型就可以调用write()void write(byte buffer )向一个输出流写一个完整的字节数组void write(byte buffer , int offset, int numBytes)写数组buffer以bufferoffset为起点的numBytes个字节区域内的内容9.2 文件文件读读写(写(续续)v字符流字符流为基于字符基于字符的的输入入输出出处理提供了丰富的理提供了丰富的功能,而功能,而Reader和和Writer是所有字符流的基是所有字符流的基类。Reader和和Writer都是都是抽象抽象类,它,它们定定义了字符了字符流的一些常用方法(流的一些常用方

11、法(见书表表8-5、表、表8-6)。)。9.2 文件文件读读写(写(续续)vFileReader FileReader类是Reader类的子类,它可以对文件进行读取。常用的构造方法如下:FileReader(String name)使用指定的文件名name创建一个FileReader的对象,如果文件不存在会产生FileNotFoundException。FileReader(File file)使用指定的文件对象来创建一个FileReader的对象,如果文件不存在会产生FileNotFoundException。FileReader常用的方法参考Reader类。9.2 文件文件读读写(写(续续

12、)vFileWriterFileWriter类是Writer类的子类,它可以对文件进行写入。它常用的构造方法如下:FileWriter(String name) 使用指定的文件名name创建一个FileWriter的对象。FileWriter(File file) 使用指定的文件对象file创建一个FileWriter的对象。FileWriter类的创建不依赖于文件存在与否。在创建文件之前,FileWriter将在创建对象时打开它来作为输出。9.3 过滤过滤流和流和节节点流点流v过滤流与流与节点流点流 根据流的建立方式和工作原理,将流分为:节点流(NodeStreams)直接建立在输入、输出媒

13、体上。过滤流(FilterStreams),过滤流必须以某一个节点流作为流的来源,可以在读/写数据的同时对数据进行处理。9.3 过滤过滤流和流和节节点流(点流(续续)v过滤过滤流必流必须须建立在建立在节节点流之上,点流之上,对节对节点流中的数点流中的数据据进进行某些加工、行某些加工、处处理,并提供一些友好的方法理,并提供一些友好的方法供用供用户进户进行行输输入、入、输输出操作以及流控制。出操作以及流控制。v我我们们前面学前面学习过习过的的FileReader、FileWriter、FileInputStream、FileOutputStream对对文件文件进进行直接的操作,属于行直接的操作,属

14、于节节点流。点流。 9.3 过滤过滤流和流和节节点流(点流(续续)vJava中的中的InputStream类对类对流数据流数据进进行封装行封装的的时时候是不具候是不具备缓备缓冲功能的,由于数据的冲功能的,由于数据的传输传输速速度度远远小于小于处处理器的运算速度理器的运算速度 ,会造成,会造成处处理器的浪理器的浪费费。因此,。因此,Java语语言提供了言提供了BufferedInputStream这这个个过滤过滤流来封装流来封装InputStream节节点流,点流,对对流数据增加了流数据增加了带缓带缓冲冲的封装来提高数据的封装来提高数据处处理的性能。同理的性能。同样样的提供了的提供了Buffer

15、edOutputStream来提高来提高OutputStream类类的数据的数据处处理性能。理性能。9.3 过滤过滤流和流和节节点流(点流(续续)vBufferedInputStream类常用的构造方法:public BufferedInputStream(InputStream in)public BufferedInputStream(InputStream in,int size)两种构造方法都是为某种输入流in创建一个新的缓冲流,方法一创建的缓冲大小为缺省值(32bytes),方法二则由用户指定缓冲区大小,在性能优化时,通常都把size的值设定为内存页大小或I/O块大小的整数倍。在I/

16、O量不大时,该类所起作用不是很明显;但当程序I/O量很大,且对程序效率要求很高时,使用该类就能大大提高程序的效率。9.3 过滤过滤流和流和节节点流(点流(续续)vBufferedOutputStream类常用的构造方法:public BufferedOutputStream(OutputStream out) public BufferedOutputStream(OutputStream out,int size)BufferedOutputStream的两种构造方法的用法与BufferedInputStream的两种构造方法的用法类似。9.3 过滤过滤流和流和节节点流(点流(续续)v在使用

17、在使用Java语言言进行行编程程时,常常需要,常常需要对除了二除了二进制文件和使用文本文件外的基于制文件和使用文本文件外的基于Data的数据操的数据操作作 ,这里的里的Data指的是指的是Java的基本数据的基本数据类型和型和String。基本数据。基本数据类型包括型包括byte、int、char、long、float、double、boolean和和short。使用前面提到的。使用前面提到的InputStream和和OutputStream对这些数据些数据 进行行处理将会非常理将会非常的麻的麻烦,Java语言提供了言提供了DataInputStream和和DataOutputStream基本

18、数据基本数据类型型进行操作。行操作。 9.3 过滤过滤流和流和节节点流(点流(续续)DataInputStream和DataOutputStream的构造方法的基本结构为:DataInputStream(节点流对象)DataInputStream(其它过滤流对象)在DataInputStream和DataOutputStream两个类中的方法都很简单,基本结构为readXXXX()和writeXXXX()其中XXXX代表基本数据类型或者String。9.3 过滤过滤流和流和节节点流(点流(续续)9.4 RandomAccessFile类类 vRandomAccessFile类 有时候必须对文件

19、的某些部分进行读取或者写入的操作,也就是进行随机存取,即读写文件的位置要能够在文件中随意的移动。而我们前面提到的输入输出流都只能对文件进行顺序的读写,当要对文件进行随机存取的时候我们使用RandomAccessFile类来进行处理。9.4 RandomAccessFile类类 v类RandomAccessFile的声明的声明为: public class RandomAccessFile extends Object implements DataInput, DataOutput接口DataInput中定义的方法主要包括从流中读取基本类型的数据、读取一行数据、或者读取指定长度的字节数。如:r

20、eadBoolean()、readInt()、readLine()、readFully()等。接口DataOutput中定义的方法主要是向流中写入基本类型的数据、或者写入一定长度的字节数组。如:writeChar()、writeDouble()、write()等。注意:RandomAccessFile可对文件实现读和写两种操作。9.4 RaomAccessFile类类 (续续)vRandomAccessFile类的常用构造方法:的常用构造方法:RandomAccessFile(String name, String mode) name是文件名,mode是打开方式,例如“r”表示只读,“rw”

21、表示可读写。 RandomAccessFile(File file, String mode) file是文件对象,mode是打开方式,例如“r”表示只读,“rw”表示可读写。9.4 RaomAccessFile类类 (续续)vRandomAccessFile类操作文件指操作文件指针的常用方的常用方法:法:long getFilePointer( ) 用于得到当前的文件指针void seek(long pos) 用于移动文件指针到指定的位置,调用seek()方法后,接下来的读或写操作将在文件的新位置发生int skipBytes(int n) int skipBytes(int n) 使文件指针向前移动指定的n个字节

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

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