收藏 分享(赏)

轻松学Java之Java的输入输出流.pptx

上传人:kpmy5893 文档编号:9177767 上传时间:2019-07-27 格式:PPTX 页数:43 大小:979.22KB
下载 相关 举报
轻松学Java之Java的输入输出流.pptx_第1页
第1页 / 共43页
轻松学Java之Java的输入输出流.pptx_第2页
第2页 / 共43页
轻松学Java之Java的输入输出流.pptx_第3页
第3页 / 共43页
轻松学Java之Java的输入输出流.pptx_第4页
第4页 / 共43页
轻松学Java之Java的输入输出流.pptx_第5页
第5页 / 共43页
点击查看更多>>
资源描述

1、第15章 Java的输入输出流,对于任何编程语言,处理数据的输入、输出操作都占有极其重要的地位。Java语言以流的形式进行数据的输入、输出处理。这一章我们将为大家详细讲述输入输出流的概念、文件的概念以及字节的输入输出流和字符的输入输出流。,15.1 输入输出流概述,数据流是形象的概念,可以理解为是一种“数据的管道”。管道中流动的东西可以是基于字节,也可以是基于字符的。就好像管道里面可以流动水,也可以流动石油一样,当程序需要读取数据的时候,就会开启一个通向数据源的管道,程序就可以从中提取数据。关于数据流,其输入输出的过程可以用图15.1来表示。,15.1 输入输出流概述,程序从数据源(包括各种输

2、入设备,如键盘、磁盘、文件等)中读取数据称之为输入;程序将数据写入目标设备(包括各种输出设备,如显示器、磁盘、文件等)称之为输出。我们也可以用示意图15.2来表示。,15.1 输入输出流概述,数据的输入/输出属于IO部分,Java把处理输入/输出相关的类放在java.io包中。而且java.io不属于java.lang,所以必须使用import将其导入进来。我们可以把常用的java.io包架构图用图15.3来表示。,15.1 输入输出流概述,Java中的数据流分为2种,一种是字节流,另一种是字符流。这两种流主要由4个抽象类来表示:InputStream、OutputStream、Reader、

3、Writer,输入输出各两种。其中InputStream和OutputStream表示字节流,Reader和Writer表示字符流,其他流均是继承这4个抽象类而来的。 下面我们就来具体的学习这些流的用法。,15.2 文件,输入、输出操作经常处理的设备之一是文件。Java语言提供了File类和RandomAccessFile类来对文件进行处理。File类用于管理文件系统中的文件或目录,RandomAccessFile类提供了随机读写文件的功能。下面对这些内容进行详细介绍。,15.2.1 File类,File类是一个可以对文件本身的属性进行操作的类。例如,可以使用File类中的方法获取文件或者目录

4、的信息,还可以对文件进行创建、修改和删除等操作。File类除了对文件进行操作外,Java允许使用File类将目录当作文件进行处理。File类构造方法如图15.4所示。,15.2.1 File类,而File类定义的一些主要方法我们可以用表15.1来表示。下面我们再来讲一些对文件的具体操作,以更好的加深对File类的理解。,15.2.2 文件的创建、修改与删除,File类中定义了一些方法,允许对文件和目录进行创建、修改与删除操作。其有关对文件和目录进行创建、修改与删除操作的方法,我们总结在了表15.2中。 创建文件使用File.createNewFile()方法。如果该文件创建成功,返回true。

5、如果该文件已经存在,则创建失败,返回false。如果有错误发生,比如路径找不到等,则会抛出IOException异常。,15.2.3 获取文件属性,File类中获取文件本身信息包括获取文件的名字、文件的长度、文件的路径、判断文件是否可读或者可写、是否存在等。获取文件本身信息的方法以及方法描述如表15.3所示。File类只能对文件进行一些简单操作,比如取属性,创建、删除和更名等,并不能支持文件内容的读写。要想对文件进行读写操作,就必须通过输入输出流来完成。,15.2.4 RandomAccessFile类,除了File类以外,Java还提供了用来专门处理文件的类,并称之为随机访问文件Random

6、AccessFile类。该类提供了更加完善的、对文件输入输出操作的功能。RandomAccessFile类可以在任意位置进行读写操作,处理文件更加灵活。RandomAccessFile类的构造方法如图15.10所示。,15.2.4 RandomAccessFile类,图中mode参数指定用以打开文件的访问模式。mode的具体值及含义如表15.3所示。RandomAccessFile类中的一些主要方法如表15.3所示。,15.3 字节输入流,字节输入流用于以二进制的形式从数据源中读取数据。InputStream类是字节输入流的基类,该类包括FileInputStream、FilterInputS

7、tream、BufferedInputStream、DataInputStream等子类。具体内容如图15.12所示。,15.3.1 字节输入流InputStream,InputStream类是所有字节输入流类的父类。InputStream类中拥有很多字节输入流都需要的方法,可以通过使用InputStream类提供的方法实现从输入流读取字节或者字节数组数据的功能。 InputStream类的方法及功能说明如表15.4所示。,15.3.2 字节文件输入流FileInputStream,FileInputStream类可以顺序的读取文本文件中的字节数据,它是InputStream的子类。FileI

8、nputStream类中的构造方法如图15.13所示。,15.3.2 字节文件输入流FileInputStream,FileInputStream类中的方法及其描述如表15.5所示。,15.3.3 输入流过滤器FilterInputStream,过滤流提供了在读写数据的同时可以对数据进行处理的功能,同时还提供了同步机制,使得某一时刻只有一个线程可以访问一个数据流,以防止多个线程同时对一个数据流进行操作所带来的意想不到的结果。 为了使用一个过滤流,必须首先把过滤流连接到某个输入输出流上,通常通过在构造方法的参数中指定所要连接的输入输出流来实现。输入流过滤器FilterInputStream的构造

9、方法如图15.15所示。,15.3.3 输入流过滤器FilterInputStream,FilterInputStream定义的方法及方法描述如表15.6所示。,15.3.4 字节缓冲区输入流BufferedInputStream,BufferedInputStream类是InputStream类的间接子类,其直接父类是FilterInputStream。该类采用缓冲区机制进行字节流输入。BufferedInputStream类的构造方法如图15.16所示。,15.3.4 字节缓冲区输入流BufferedInputStream,BufferedInputStream定义的方法及方法描述如表15

10、.7所示。以缓冲区的机制进行流的输入、输出具有更高的执行效率。而且,在字节流方式下,通过调用mark()和reset()方法,可以从指定位置操作,而不仅仅是只能按顺序操作。,15.3.5 数据输入流DataInputStream,DataInputStream(数据输入流)允许应用程序从基础输入流中读取基本Java数据类型,如byte、int、float、boolean等。DataInputStream类的构造方法如图15.18所示。,15.3.5 数据输入流DataInputStream,DataInputStream类定义了许多以read开头后面跟数据类型的方法,这些方法用于读取指定数据类

11、型的数据,如表15.8所示。,15.4 字节输出流,字节输出流用于以二进制的形式将数据写入目标设备。OutputStream类是字节输出流的基类,该类包括FileOutputStream、BufferedOutputStream、DataOutputStream、PrintStream等子类。如图15.20所示。,15.4.1 字节输出流,OutputStream类是所有字节输出流类的父类。OutputStream类中拥有很多字节输出流都需要的方法,可以通过使用OutputStream类提供的方法实现向输出流写入字节或者字节数组数据的功能。OutputStream类的方法及方法描述如表15.9

12、所示。,15.4.2 字节文件输出流FileOutputStream,FileOutputStream类用于将字节流数据写入文件。FileOutputStream类的构造方法如图15.21所示。,15.4.2 字节文件输出流FileOutputStream,FileOutputStream中的方法及其使用描述如表15.10所示。,15.4.3 字节缓冲区输出流BufferedOutputStream,BufferedOutputStream类是OutputStream类的间接子类,其直接父类是FilterOutputStream。该类采用缓冲区机制进行字节流输出。通过设置这种输出流,应用程序就

13、可以将各个字节写入基础输出流中,而不必为每次字节写入调用基础系统。BufferedOutputStream类的构造方法如图15.23所示。,15.4.3 字节缓冲区输出流BufferedOutputStream,BufferedOutputStream定义的方法及方法描述如表15.11所示。flush()方法用于强制将缓冲区的内容立即写入输出流。在使用缓存区机制的输出流时,调用write()方法后数据并没有立即写入输出流,而是先放到缓存区中。所以,在必要的地方可以调用flush()方法强制刷新缓冲区。,15.4.4 数据输出流DataOutputStream,DataOutputStream(

14、数据输出流)允许应用程序以适当方式将基本Java数据类型写入输出流中,如byte、int、float、boolean等类型。然后,应用程序可以使用数据输入流将数据读入。DataOutputStream的构造函数如图15.25所示。,15.4.4 数据输出流DataOutputStream,DataOutputStream类中定义的方法及方法描述如表15.12所示。上面的输出结果之所以会产生问号,是因为DataOutputStream类是按二进制输入的这些数据类型,而记事本文件对输出格式进行了转化,按字符输出。所以有些格式显示不出来,变成了问号。,15.4.5 字节打印流PrintStream,

15、PrintStream类用于将字节数据进行格式化的输出。前面介绍的其他OutputStream类的子类在输出时均是保持原有字节数据的格式。而PrintStream类在输出时会进行字符格式转换,默认使用操作系统的编码进行字符转换。 PrintStream类中的主要方法及方法描述如表15.13所示。,15.5 字符输入流,字符输入流用于以字符的形式从数据源中读取数据。Reader类是字符输入流的基类,该类包括FileReader、BufferedReader等子类。如图15.28所示。,15.5.1 字符输入流Reader,Reader是Java语言中字符输入流所有类的父类,该类是抽象类,不能被实

16、例化。Reader类中定义了许多与读取字符数据有关的方法。Reader类中定义的方法及方法描述如表15.14所示。,15.5.2 字符文件输入流FileReader,FileReader和FileInputStream类似,所不同的是它是针对字符进行操作,而不是字节。它的间接父类是字符流Reader。FileWriter是用于写入字符文件的便捷类。在FileReader类中未自定义方法,而是继承了其父类及间接父类中的方法。 FileReader类的构造方法如图15.29所示。,15.5.3 字符缓冲区输入流BufferedReader,BufferedReader类从字符输入流中读取文本,缓冲

17、各个字符,从而提供字符、数组和行的高效读取。Java中,控制台输入由从System.in读取数据来完成。BufferedReader支持缓冲输入流。字符缓冲区输入流BufferedReader的构造方法如图15.31所示。,15.5.3 字符缓冲区输入流BufferedReader,BufferedReader类提供的方法及方法描述如表15.15所示。,15.6 字符输出流,字符输出流用于以字符的形式将数据写入目标设备。Writer类是字符输出流的基类,该类包括FileWriter、BufferedWriter、PrintWriter等子类。如图15.33所示。,15.6.1 字符输出流Wri

18、ter,Writer类是字符输出流所有类的父类,该类是抽象类,不能被实例化。Writer类中定义了许多与写字符数据有关的方法,Writer类中定义的方法及方法描述如表15.15所示。,15.6.2 字符文件输出流FileWriter,FileWriter类用于将字符数据写入文件。FileWriter类的构造方法如图15.34所示。,15.6.3 字符缓冲区输出流BufferedWriter,BufferWriter类将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够了。BufferedWriter

19、类的构造函数如图15.36所示。,15.6.3 字符缓冲区输出流BufferedWriter,BufferedWriter提供方法及方法描述如表15.17所示。,15.6.4 字符打印流PrintWriter,PrintWriter类同用于将字符数据进行格式化的输出。前面介绍的其他Writer类的子类在输出时均是保持原有字符数据的格式。而PrintWriter类在输出时会进行字符格式转换,默认使用操作系统的编码进行字符转换。 PrintWriter类中的主要方法及方法描述如表15.18所示。,15.7 小结,本章是Java输入输出的核心内容,也是难度比较大的内容。首先介绍了输入/输出的基本概念,然后介绍了File类以及文件访问类的使用,最后分开两部分内容介绍输入输出流:字节流和字符流。本章的重点是InputStream&和OutputStream,Reader和Writer的理解和运用,难点是对这些类中各种方法的熟练运用。希望大家多加练习巩固,以更好地在今后工作中使用输入输出流。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报