Java语言程序设计-输入输出处理.ppt

上传人:wuy****n92 文档编号:70793194 上传时间:2023-01-28 格式:PPT 页数:30 大小:340.97KB
返回 下载 相关 举报
Java语言程序设计-输入输出处理.ppt_第1页
第1页 / 共30页
Java语言程序设计-输入输出处理.ppt_第2页
第2页 / 共30页
点击查看更多>>
资源描述

《Java语言程序设计-输入输出处理.ppt》由会员分享,可在线阅读,更多相关《Java语言程序设计-输入输出处理.ppt(30页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、 JavaJava程序设计程序设计 主讲教师:周立波主讲教师:周立波 第第7章章 输入输入/输出处理输出处理7.1 输入输入/输出基础输出基础 7.1.1 输入输入/输出概述输出概述 在在Java类库中,类库中,IO部分包含:标准输入部分包含:标准输入/输输出,文件的操作,网络上的数据流,字符串流,出,文件的操作,网络上的数据流,字符串流,对象流,管道流,对象流,管道流,zip文件流等。文件流等。7.1.2 流的概念流的概念 1、流的概念、流的概念 2、输入流与输出流、输入流与输出流 输出流:将数据资源从应用程序传递到外设、输出流:将数据资源从应用程序传递到外设、外存等的流,称为输出流(外存等

2、的流,称为输出流(OutputStream)输入流:将数据资源从外设或外存传递到应用程输入流:将数据资源从外设或外存传递到应用程序的流称为输入流序的流称为输入流。(。(InputStream)3.字节流与字符流字节流与字符流 按照处理对象的不同,又可将流分成字节流和按照处理对象的不同,又可将流分成字节流和字符流两种。字符流两种。字节流字节流(byte stream):):为处理字节的输入为处理字节的输入和输出提供了方便的方法。和输出提供了方便的方法。字符流字符流(character stream):):为字符的输为字符的输入和输出处理提供了方便。入和输出处理提供了方便。InputStream类

3、和类和OutputStream类本身属类本身属于字节流的范围。相对应的字符流在于字节流的范围。相对应的字符流在JavaJava输入输入/输出类库中有两个抽象类:输出类库中有两个抽象类:Reader和和Writer Java Java中中I/OI/O处理的类库层次处理的类库层次 综合考虑综合考虑“输入流输入流/输出流输出流”和和“字节流字节流/字符字符流流”不同的分类方法,不同的分类方法,JavaJava的流可以由四个抽象的流可以由四个抽象类来表示:类来表示:InputStream,OutputStream,Reader,Writer。JavaJava中中其他多种多样变化的流均是由它们派生的其他

4、多种多样变化的流均是由它们派生的.1.InputStream类类 1)InputStream类的方法类的方法 (1)三个基本的三个基本的read()方法方法 int read();int read(byte);int read(byte,int off,int len);(2)其他方法其他方法void close():完成流操作后,使用该方法关闭流。完成流操作后,使用该方法关闭流。int available():报告立刻可以从流中读取的字节数。报告立刻可以从流中读取的字节数。skip(long):丢弃流中制定数目的字节。丢弃流中制定数目的字节。boolean markSupported();v

5、oid reset(int);Void mark(int);这三个方法用于支持流的这三个方法用于支持流的“回放回放”(回读)操作。(回读)操作。2)InputStream类的派生类类的派生类 FileInputStream:用于文件系统的输入。用于文件系统的输入。PipeInputStream:用于进行管道方式的输入。用于进行管道方式的输入。FilterInputStream:过滤流的接口。过滤流的接口。2.OutputStream类类 1)OutputStream类的方法介绍类的方法介绍 (1)三个基本的)三个基本的write()方法方法 void write(int);void write

6、(byte);void write(byte,int,int);(2)其他方法)其他方法 void close():完成写操作后,关闭流的方法。完成写操作后,关闭流的方法。void flush():该方法允许强制执行写操作。该方法允许强制执行写操作。2)OutputStream类的派生类类的派生类FileOutputStream:用于文件系统的输出。用于文件系统的输出。PipedOutputStream:用于管道方式的输出。用于管道方式的输出。FilterOutputStream:为过滤流提供了统一的接口,为过滤流提供了统一的接口,使得在数据输出时进行数据处理。使得在数据输出时进行数据处理。B

7、yteArrayOutputStream:用于向内存写数据。用于向内存写数据。ObjectOutputStream:用于对象操作序列化的输出用于对象操作序列化的输出流类。流类。BufferedOutputStream:在进行数据写出时将数据在进行数据写出时将数据保存在数据缓冲区,以提高写出速度。保存在数据缓冲区,以提高写出速度。3.Reader类类 Reader类是基于字符流处理的输入流类。类是基于字符流处理的输入流类。4.Writer类类 Writer类是基于字符流处理的输出流类。类是基于字符流处理的输出流类。7.1.4 节点流和过滤流节点流和过滤流 根据流相对于程序的另一个端点的不同,可以

8、分根据流相对于程序的另一个端点的不同,可以分为节点流和过滤流。为节点流和过滤流。节点流:以特定源,比如磁盘文件、内存区域等节点流:以特定源,比如磁盘文件、内存区域等之间的管道为端点构造的之间的管道为端点构造的I/0流称为节点流。流称为节点流。过滤流:以其他已经存在的流为端点构造的过滤流:以其他已经存在的流为端点构造的I/O流称为过滤流。流称为过滤流。7.1.5 输入输入/输出流的套接输出流的套接 一般通过过滤流将多个流套接在一起,利用各种一般通过过滤流将多个流套接在一起,利用各种流的特性共同处理数据流。套接的多个流就构成了流的特性共同处理数据流。套接的多个流就构成了一个流链。一个流链。7.1.

9、6 常用的输入常用的输入/输出流输出流 1.文件流文件流 FileInputStream/FileOutputStream,FileReader/FileWriter (1).FileInputStream FileInputStream类是为了处理来源于文件的类是为了处理来源于文件的面向字节输入而设计的类,它是由面向字节输入而设计的类,它是由InputStream类派生而来的。类派生而来的。构造方法构造方法:FileInputStream(File file);FileInputStream(FileDescriptor fdObj);FileInputStream(String name)

10、;公有方法公有方法 int available():获取可以从文件流中读取的字获取可以从文件流中读取的字节数目。节数目。void close():关闭该文件流。关闭该文件流。int read():从文件流读取一个字节的数据。从文件流读取一个字节的数据。int read(byte b):从文件流读取从文件流读取b.length字字节的数据到一个字节数组中。节的数据到一个字节数组中。int read(byte b,int off,int len):从文件流从文件流读取读取len字节的数据到一个字节数组中。字节的数据到一个字节数组中。long skip(long n):略过并舍弃略过并舍弃n个字节的

11、数据。个字节的数据。FileInputStream类的示例类的示例 例例1 1:读取文件全部内容:读取文件全部内容 例例2 2:读取文件部分内容:读取文件部分内容 例例3 3:读取时跳过文件部分内容:读取时跳过文件部分内容 (2)FileOutputStream类类 在在Java中,文件的写入可以通过中,文件的写入可以通过FileOutputStreamFileOutputStream类的方法实现,用户可以利用该类一个字节一个字类的方法实现,用户可以利用该类一个字节一个字节地将数据写入文件。节地将数据写入文件。构造方法构造方法 FileOutputStream(File file),FileO

12、utputStream(FileDescriptor fdObj),FileOutputStream(String name),FileOutputStream(String name,boolean append)常用方法常用方法 void close():关闭输出流。关闭输出流。protected void finalize():确认该输出流没有任确认该输出流没有任何引用的时候调用何引用的时候调用close方法。方法。void write(byte b):从指定字节数组写入输出从指定字节数组写入输出流。流。void write(byte b,int off,int len)从指定字节从指定

13、字节数组写入指定字符到输出流。数组写入指定字符到输出流。void write(int b):写入指定的字节到输出流。写入指定的字节到输出流。(3)文件字符流()文件字符流(FileReader类和类和FileWriter类类)FileReader类创建一个可以读取文件内容的类创建一个可以读取文件内容的Reader类。类。FileWriter创建一个可以写文件的创建一个可以写文件的Writer类。类。例子:通过文件字符流实现文本的复制例子:通过文件字符流实现文本的复制 2.缓存流缓存流 缓存流包括缓存流包括BufferedReader/BufferedWriter类类和和BufferedInpu

14、tStream/BufferedOutputStream类类 缓存流把数据从原始流成块读入或把数据积累到一个大缓存流把数据从原始流成块读入或把数据积累到一个大数据块后再成批写出,通过减少系统资源的读写次数来加数据块后再成批写出,通过减少系统资源的读写次数来加快程序的执行。快程序的执行。【注】【注】BufferedOutputStream和和BufferedWriter类类仅仅在缓冲区满或调用仅仅在缓冲区满或调用flush()方法时才将数据写出。方法时才将数据写出。缓存流是过滤流,在创建具体缓存流时,缓存流是过滤流,在创建具体缓存流时,需要给出一个需要给出一个InputStream/Output

15、Stream类类型的流作为前端流,并可以指明缓冲区的大型的流作为前端流,并可以指明缓冲区的大小。小。例如,例如,InputStream类的构造方法:类的构造方法:public BufferedInputStream(InputStream in)public BufferedInputStream(InputStream in,int size)BufferedReader类中增加了一个有用的方法类中增加了一个有用的方法readLine(),该方法读一行字符返回。该方法读一行字符返回。3.管道流管道流 管道流可以实现线程间数据的直接传输。管道流可以实现线程间数据的直接传输。4.数据流数据流 数

16、据流包括数据流包括DataInputStream/DataOutputStream类,它们允许按类,它们允许按Java的基本数据类型读写流中的数的基本数据类型读写流中的数据。这两个类中提供了很多读写基本数据类型的方据。这两个类中提供了很多读写基本数据类型的方法。法。5.标准输入标准输入/输出输出 Java在在System类中定义了与系统标准输入类中定义了与系统标准输入/输输出相关联的三个流,它们是:出相关联的三个流,它们是:System.in,System.out,System.err。System类是类是Java中一个功能很强大的类,利用中一个功能很强大的类,利用它可以获得它可以获得Java

17、运行时的系统信息,运行时的系统信息,System类的类的所有变量和方法都是所有变量和方法都是static。System.in:标准输入流。:标准输入流。这个流在程序运行时一直打开并准备好提供输入这个流在程序运行时一直打开并准备好提供输入的数据。该流一般对应于键盘的输入。的数据。该流一般对应于键盘的输入。System.out:标准输出流。标准输出流。这个流在程序运行时一直打开并准备好接收输出这个流在程序运行时一直打开并准备好接收输出的数据。该流一般对应于屏幕。的数据。该流一般对应于屏幕。System.err:标准错误输出流。标准错误输出流。这个流在程序运行时一直打开并准备好接收输出这个流在程序运

18、行时一直打开并准备好接收输出的数据。该流一般对应于屏幕并且用来显示错误消的数据。该流一般对应于屏幕并且用来显示错误消息。息。(1)标准输入()标准输入(System.in)用用System.in的的read()方法接受从键盘读入的方法接受从键盘读入的数据。也可以在数据。也可以在System.in上套接其他过滤流。上套接其他过滤流。这样可以使用更方便的方法从标准输入流上读取这样可以使用更方便的方法从标准输入流上读取数据。数据。【注】【注】必须使用必须使用try-catch对对System.in.read()可能抛可能抛出的出的IOException类型的异常进行处理。类型的异常进行处理。执行执行

19、System.in.read()方法将从键盘缓冲区读方法将从键盘缓冲区读入一个字节的数据,但返回的是入一个字节的数据,但返回的是16位的整型值,位的整型值,该整型值只有低位字节是真正输入的数据,高位该整型值只有低位字节是真正输入的数据,高位字节全部是零。字节全部是零。(2)标准输出)标准输出(System.out)标准输出是打印输出流标准输出是打印输出流PrintStream类类的对象。的对象。PrintStream是一种过滤流,它定是一种过滤流,它定义了屏幕上显示不同类型数据的方法义了屏幕上显示不同类型数据的方法print(),println()。【增】字节流与字符流的转换【增】字节流与字符

20、流的转换 InputStreamReader类和类和OutputStreamWriter类是字节流和字符流之间转换的类。前者可以将一类是字节流和字符流之间转换的类。前者可以将一个字节流中的字节码解码成字符,后者将写入的字个字节流中的字节码解码成字符,后者将写入的字符编码成字节后写入到一个字节流。符编码成字节后写入到一个字节流。InputStreamReader有两个主要的构造函数:有两个主要的构造函数:nInputStreamReader(InputStream in)/用默认的字符集创建一个对象。用默认的字符集创建一个对象。InputStreamReader(InputStream in,S

21、tring charsetName)/接受以指定字符集名的字符创,并用该字符集创接受以指定字符集名的字符创,并用该字符集创建对象。建对象。为了达到最好的效率,避免频繁进行字符与字为了达到最好的效率,避免频繁进行字符与字节间的相互转换,最好不用这两个类来进行读写,节间的相互转换,最好不用这两个类来进行读写,应尽量使用应尽量使用BufferedWriter类包装类包装OutputStreamWriter类,用类,用BufferedReader类类包装包装InputStreamReader类。类。n包装方法:包装方法:nBufferedWriter out=new BufferedWriter(ne

22、w OutputStreamWriter(System.out);nBufferedReader in=new BufferedReader(new OutputStreamReader(System.in);7.2 文件和目录管理文件和目录管理 在在Java中文件的处理被统一到了流处中文件的处理被统一到了流处理,但有些操作无法通过流的方式完成,理,但有些操作无法通过流的方式完成,而要通过而要通过File类。类。File类直接处理文件和文件系统。它用类直接处理文件和文件系统。它用来操纵文件和获取文件的信息,但不提供来操纵文件和获取文件的信息,但不提供对文件数据读取的方法,这些方法由文件对文件数

23、据读取的方法,这些方法由文件流提供。流提供。7.2.1创建创建File类的对象类的对象 File类的构造方法:类的构造方法:(1)public File(String pathname)参数参数pathname指定新创建的指定新创建的File对象对应的磁对象对应的磁盘文件或目录名及其路径名。盘文件或目录名及其路径名。(2)public File(String parent,String child)参数参数parent指定了文件或目录的父目录的绝对指定了文件或目录的父目录的绝对或相对路径,参数或相对路径,参数child指定了文件或目录名。指定了文件或目录名。将路径与名称分开的好处是相同路径的文

24、件或将路径与名称分开的好处是相同路径的文件或目录可以共享同一个路径字符串,便于管理和修改目录可以共享同一个路径字符串,便于管理和修改.(3)public File(File parent,String child)参数参数parent是已经存在的代表文件或父目录的是已经存在的代表文件或父目录的File类对象,参数类对象,参数child表示文件或目录名。表示文件或目录名。7.2.2 操纵操纵File对象对象 1.文件名的操作文件名的操作 getName():获取该文件的名字。获取该文件的名字。getAbsolutePath():获取抽象的路径名的绝对字获取抽象的路径名的绝对字符串。符串。getP

25、ath():获取该文件的路径。获取该文件的路径。renameTo(File f):将文件重命名为将文件重命名为f所对应的文件所对应的文件名。名。2.文件信息测试文件信息测试 isAbsolute():测试文件是否用绝对路径名来表示。测试文件是否用绝对路径名来表示。canRead():测试程序是否能从该文件读。测试程序是否能从该文件读。canWrite():测试程序是否能够对文件写操作。测试程序是否能够对文件写操作。exists():判断文件是否存在。判断文件是否存在。isDirectory():判断一个文件是否是目录。判断一个文件是否是目录。isFile():判断一个文件是否是文件。判断一个文

26、件是否是文件。3.获取文件一般信息与常用操作获取文件一般信息与常用操作 length():返回该文件的长度,以返回该文件的长度,以byte为单位。为单位。lastModified():返回文件最后被修改的时间。返回文件最后被修改的时间。delete():删除文件或目录。删除文件或目录。4.目录操作目录操作 String list():如果该文件是一个目录,返回该目录如果该文件是一个目录,返回该目录下所有文件名的列表。下所有文件名的列表。mkdir():建立一个目录,该目录由建立一个目录,该目录由File对象表示。对象表示。7.3 随机存取文件随机存取文件 7.3.1 RandomAccessF

27、ile类概述类概述 Java中使用中使用RandomAccessFile类实现对文件类实现对文件内容的随机读写操作。同内容的随机读写操作。同I/O流类相比,它最大的流类相比,它最大的区别是该类既可以对文件进行读操作,也可以对文区别是该类既可以对文件进行读操作,也可以对文件进行写操作,并提供了比较全面的数据读写方法。件进行写操作,并提供了比较全面的数据读写方法。7.3.2 随机存取文件的创建随机存取文件的创建 RandomAccessFile 类的构造方法:类的构造方法:public RandomAccessFile(String name,String mode)throws FileNotF

28、oundException public RandomAccessFile(File file,String mode)throws FileNotFoundException 参数参数mode规定了规定了RandomAccessFile对象可以对象可以用何种方式打开和访问指定的文件。用何种方式打开和访问指定的文件。Mode有四种取有四种取值值:”r”,”rw”,”rwd”,”rws”.r-以只读方式打开文件;以只读方式打开文件;rw-以读写方式打开文件;以读写方式打开文件;rwd-以读写方式打开文件,并且要求对文件内容以读写方式打开文件,并且要求对文件内容的更新要同步地写到底层存储设备;的更

29、新要同步地写到底层存储设备;rws-与与rwd基本相同,但还可以更新文件的元基本相同,但还可以更新文件的元数据(数据(metaData)。)。7.3.3 随机存取文件的操作随机存取文件的操作 1.文件指针的操作文件指针的操作 若要在文件的任意位置进行数据的读写,必须定若要在文件的任意位置进行数据的读写,必须定义文件指针或称为文件位置指针,以及移动这个指义文件指针或称为文件位置指针,以及移动这个指针的方法。针的方法。文件指针是指以字节为单位的相对于文件开头的偏文件指针是指以字节为单位的相对于文件开头的偏移量,是下次读、写的起点。移量,是下次读、写的起点。RandomAccessFile类的文件指

30、针操作方法:类的文件指针操作方法:long getFilePointer():返回当前文件指针,既从文返回当前文件指针,既从文件开头算起的绝对位置。件开头算起的绝对位置。void seek(long pos):将文件指针定位到指定位置。将文件指针定位到指定位置。long lenth():返回文件长度。返回文件长度。int skipByte(int n):从当前位置开始跳过从当前位置开始跳过n个字节。个字节。2.读操作读操作 RandomAccessFile类和类和DataInputStream都实都实现了现了DataInput接口,因此接口,因此RandomAccessFile类可以类可以提供

31、与提供与DataInputStream相似的数据读取方法,即可相似的数据读取方法,即可以按数据类型读取数据,具有比以按数据类型读取数据,具有比FileInputStream 更强大的功能。更强大的功能。3.写操作写操作 RandomAccessFile类同时还实现了类同时还实现了DataOutput接口,因此具有与接口,因此具有与DataOutput类同样强大的具有类型类同样强大的具有类型转换功能的写操作方法。转换功能的写操作方法。7.4 对象的串行化对象的串行化 串行化的概念和目的串行化的概念和目的 1.对象的永久化对象的永久化 将将Java程序中的对象保存在外存中,称程序中的对象保存在外存

32、中,称为对象永久化。为对象永久化。2.对象串行化对象串行化 Java对象的读写过程称为对象串行化(对象的读写过程称为对象串行化(Object Serialization).3.对象串行化的使用对象串行化的使用 Java远程方法调用远程方法调用(RMI):通过通过Socket进行对象间进行对象间的通信。的通信。对象永久化:保存程序中对象,以便在该程序的对象永久化:保存程序中对象,以便在该程序的日后运行中使用。日后运行中使用。4.对象串行化技术的内容对象串行化技术的内容 如何使用如何使用ObjectInputStream类和类和ObjectOutputStream类实现对象的串行化。类实现对象的串行化。如何构造一个类使其对象可被串行化。如何构造一个类使其对象可被串行化。7.4.2 对象串行化的方法对象串行化的方法 1.把对象写到对象输出流把对象写到对象输出流 把一个对象写到一个流中相对比较简单。具体是把一个对象写到一个流中相对比较简单。具体是通过调用通过调用ObjectOutputStream类的类的writeObject()方方法实现的。该方法的定义如下:法实现的。该方法的定义如下:public final void writeObject(Object obj)throws IOException

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

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com