第10章Java语言的输入输出与文件处理(第4版)_第1页
第10章Java语言的输入输出与文件处理(第4版)_第2页
第10章Java语言的输入输出与文件处理(第4版)_第3页
第10章Java语言的输入输出与文件处理(第4版)_第4页
第10章Java语言的输入输出与文件处理(第4版)_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第1010章章 JavaJava语言语言的输入输出的输入输出与文件处理与文件处理2本章主要内容本章主要内容流的概念流的概念处理字节流的基本类:处理字节流的基本类:InputStream和和OutputStream处理字符流的基本类:处理字符流的基本类:Reader和和Writer标准输入输出标准输入输出文件管理类:文件管理类:File310.1 Java10.1 Java语言的输入输出类库语言的输入输出类库输入输出是指程序与外部设备或其他计算输入输出是指程序与外部设备或其他计算机进行交互的操作。机进行交互的操作。JavaJava语言把这些输入与输出操作用流来实语言把这些输入与输出操作用流来实

2、现,用统一的接口来表示。现,用统一的接口来表示。 JavaJava语言的输入输出功能必须借助于输入语言的输入输出功能必须借助于输入输出类库输出类库java.iojava.io包来实现。包来实现。410.1.1 流的概念流的概念流流(Stream)(Stream)是指计算机各部件之间的数据流动。是指计算机各部件之间的数据流动。按照数据的传输方向,流可分为输入流与输出按照数据的传输方向,流可分为输入流与输出流,从流的内容上划分,流分为字符流和字节流,从流的内容上划分,流分为字符流和字节流。流。输入输出流输入输出流 数据流分为输入流和输出流两大类。数据流是数据流分为输入流和输出流两大类。数据流是Ja

3、vaJava程序发送和接收数据的一个通道,通常应程序发送和接收数据的一个通道,通常应用程序中使用输入流读出数据,输出流写入数用程序中使用输入流读出数据,输出流写入数据,就好像数据流入到程序或从程序中流出。据,就好像数据流入到程序或从程序中流出。 过程如教材图过程如教材图10.110.1所示。所示。510.1.1 流的概念流的概念流式输入输出的最大特点是数据的获取和发送流式输入输出的最大特点是数据的获取和发送是沿着数据序列顺序进行,每一个数据都必须是沿着数据序列顺序进行,每一个数据都必须等待排在它前面的数据读入或送出之后才能被等待排在它前面的数据读入或送出之后才能被读写,每次读写操作处理的都是序

4、列中剩余的读写,每次读写操作处理的都是序列中剩余的未读写数据中的第一个,而不能随意选择输入未读写数据中的第一个,而不能随意选择输入输出的位置。输出的位置。 缓冲流缓冲流为一个流配有一个缓冲区为一个流配有一个缓冲区(Buffer)(Buffer),一个缓冲,一个缓冲区就是专门用于传送数据的一块内存区就是专门用于传送数据的一块内存 。当向。当向一个缓冲流写入数据时,系统将数据发送到缓一个缓冲流写入数据时,系统将数据发送到缓冲区,而不是直接发送到外部设备。缓冲区自冲区,而不是直接发送到外部设备。缓冲区自动记录数据,当缓冲区满时,系统将数据全部动记录数据,当缓冲区满时,系统将数据全部发送到相应的外部设

5、备。输出雷同。发送到相应的外部设备。输出雷同。610.1.2 输入输出流类库输入输出流类库要要java.iojava.io包中有四个基本类:包中有四个基本类:InputStreamInputStream、OutputStreamOutputStream及及ReaderReader、WriterWriter类,它们分别类,它们分别处理字节流和字符流。它们之间的相互关系如处理字节流和字符流。它们之间的相互关系如下:下: InputStreamInputStream、OutputStreamOutputStream、ReaderReader与与WriterWriter是抽象类,用于数据流的输入输出;

6、是抽象类,用于数据流的输入输出;FileFile是文是文件类,用于对磁盘文件与文件夹的管理;件类,用于对磁盘文件与文件夹的管理;RandomAccessFileRandomAccessFile是随机访问文件类,用于实是随机访问文件类,用于实现对磁盘文件的随机读写操作。现对磁盘文件的随机读写操作。 输入输入/输出输出流流字节流:字节流:处理字节数据(基本类型为 InputStream、OutputStream)字符流:字符流:处理字符数据(基本类型为Reader、Writer)710.2 使用使用InputStream和和OutputStream流类流类InputStreamInputStrea

7、m和和OutputStreamOutputStream类是类是JavaJava语言语言里用来处理以位里用来处理以位(bit)(bit)为主的流,它除了可为主的流,它除了可用来处理二进制文件用来处理二进制文件(binary file)(binary file)的数据的数据之外,也可用来处理纯文本文件。之外,也可用来处理纯文本文件。810.2.1 基本的输入输出流基本的输入输出流 InputStreamInputStream类常用的方法及功能见教材表类常用的方法及功能见教材表10.110.1。由于由于InputStreamInputStream是抽象类,所以程序中创是抽象类,所以程序中创建的输入流

8、对象一般是建的输入流对象一般是InputStreamInputStream某个子某个子类的对象,通过调用该对象继承的类的对象,通过调用该对象继承的read()read()方方法就可实现对相应外设的输入操作法就可实现对相应外设的输入操作 。注意:流中的方法都声明抛出异常,注意:流中的方法都声明抛出异常,所以程序中调用流方法时必须处理异常,所以程序中调用流方法时必须处理异常,否则编译不能通过。否则编译不能通过。910.2.1 基本的输入输出流基本的输入输出流 OutputStreamOutputStream类常用的方法及功能见教材表类常用的方法及功能见教材表10.210.2。由于由于OutputS

9、treamOutputStream是抽象类,所以程序中创是抽象类,所以程序中创建的输出流对象一般是建的输出流对象一般是OutputStreamOutputStream某个子某个子类的对象,通过调用该对象继承的类的对象,通过调用该对象继承的write()write()方法就可以实现对相应外设的输出操作。方法就可以实现对相应外设的输出操作。 1010.2.2 输入输出流的应用输入输出流的应用文件输入文件输入(FileInputStreamFileInputStream)输出流输出流(FileOutputStreamFileOutputStream )主要负责完成对本地磁盘文主要负责完成对本地磁盘文

10、件的顺序输入与输出操作。件的顺序输入与输出操作。 FileInputStreamFileInputStream类的对象表示一个文件字节输入类的对象表示一个文件字节输入流,从中可读取一个字节或一批字节。流,从中可读取一个字节或一批字节。FileOutputStreamFileOutputStream类的对象表示一个字节文件输类的对象表示一个字节文件输出流,可向流中写入一个字节或一批字节。在生出流,可向流中写入一个字节或一批字节。在生成该类的对象时,若指定的文件不存在,则创建成该类的对象时,若指定的文件不存在,则创建一个新的文件,若已存在,则清除原文件的内容。一个新的文件,若已存在,则清除原文件的

11、内容。FileInputStreamFileInputStream类和类和FileOutputStreamFileOutputStream类的构造类的构造方法见教材表方法见教材表10.310.3和和10.410.4。 见例见例10.1和和10.21110.2.2 输入输出流的应用输入输出流的应用顺序输入流顺序输入流( (SequenceInputStream) ) 它它是是InputStreamInputStream的直接子类,其功能是将多个输的直接子类,其功能是将多个输入流顺序连接在一起,形成单一的输入数据流,入流顺序连接在一起,形成单一的输入数据流,没有对应的输出数据流存在。没有对应的输出

12、数据流存在。管道输入输出流管道输入输出流 它它提供了利用管道方式进行数据输入输出管理的提供了利用管道方式进行数据输入输出管理的类。管道流用来将一个程序或线程的输出连接到类。管道流用来将一个程序或线程的输出连接到另外一个程序或线程作为输入,使得相连线程能另外一个程序或线程作为输入,使得相连线程能够通过够通过PipedInputStreamPipedInputStream和和PipedOutputStreamPipedOutputStream类类进行数据交换,从而可以实现程序内部线程间的进行数据交换,从而可以实现程序内部线程间的通信或不同程序间的通信。通信或不同程序间的通信。10.2.2 输入输出

13、流的应用输入输出流的应用过滤输入输出流过滤输入输出流 过滤输入流类过滤输入流类FilterInputStreamFilterInputStream和过滤输出流类和过滤输出流类FilterOutputStreamFilterOutputStream,分别实现了在数据的读、写,分别实现了在数据的读、写操作的同时进行数据处理,它们是操作的同时进行数据处理,它们是InputStreamInputStream和和OutputStreamOutputStream类的直接子类。类的直接子类。标准输入输出 JavaJava系统事先在系统事先在SystemSystem类中定义了静态流对象类中定义了静态流对象 S

14、ystem.inSystem.in对应于输入流,通常指键盘输入设备;对应于输入流,通常指键盘输入设备;System.outSystem.out对应于输出流,通常指显示器;对应于输出流,通常指显示器; System.errSystem.err对应于标准错误输出设备。对应于标准错误输出设备。12见例见例10.410.3 使用使用Reader和和Writer流类流类虽然虽然ReaderReader和和WriteWrite类可用来处理字符串类可用来处理字符串的读取和写入的操作,但通常我们并不的读取和写入的操作,但通常我们并不直接使用这两个类,而是使用它们的子直接使用这两个类,而是使用它们的子类来创建对

15、象,再利用对象来处理读写类来创建对象,再利用对象来处理读写操作操作1310.3.1使用使用FileReader类读取文件类读取文件在使用在使用FileReaderFileReader类读取文件时,必须先类读取文件时,必须先调用调用FileReader()FileReader()构造方法创建构造方法创建FileReaderFileReader类的对象,再利用它来调用类的对象,再利用它来调用read()read()方法,方法,FileReader()FileReader()构造方法见教构造方法见教材表材表10.1310.13。14见例见例10.510.3.2 使用使用FileWriter类写入文件

16、类写入文件FileWriterFileWriter类继承自类继承自OutputStreamWriterOutputStreamWriter类,而类,而OutputStreamWriterOutputStreamWriter类又继承自类又继承自WriterWriter类,因此类,因此WriterWriter类与类与OutputStreamWriterOutputStreamWriter类所提供的方法均可类所提供的方法均可供供FileWriterFileWriter类所创建的对象使用。类所创建的对象使用。15见例见例10.610.3.3 使用使用BufferedReader类读取文件类读取文件Bu

17、fferedReaderBufferedReader类继承自类继承自ReaderReader类,类,BufferedReaderBufferedReader类是用来读取缓冲区里的类是用来读取缓冲区里的数据。使用数据。使用BufferedReaderBufferedReader类来读取缓冲类来读取缓冲区中的数据之前,必须先创建区中的数据之前,必须先创建FileReaderFileReader类对象,再以该对象为参数来创建类对象,再以该对象为参数来创建BufferedReaderBufferedReader类的对象,然后才可以利类的对象,然后才可以利用此对象来读取缓冲区中的数据。用此对象来读取缓冲

18、区中的数据。16见例见例10.710.3.4 使用使用BufferedWriter类类写入文件写入文件使用使用BufferedWriterBufferedWriter类将数据写入缓冲区类将数据写入缓冲区的过程与使用的过程与使用BufferedReaderBufferedReader类从缓冲区类从缓冲区里读出数据的过程相似。首先必须先创建里读出数据的过程相似。首先必须先创建FileWriterFileWriter类对象,再以该对象为参数来类对象,再以该对象为参数来创建创建BufferedWriterBufferedWriter类的对象,然后就可类的对象,然后就可以利用此对象来将数据写入缓冲区中。所以利用此对象来将数据写入缓冲区中。所不同的是,缓冲区内的数据最后必须要用不同的是,缓冲区内的数据最后必须要用flush()flush()方法将缓冲区清空,也就是将缓冲方法将缓冲区清空,也就是将缓冲区中的数据全部写到文件内。区中的数据全部写到文件内。17见例见例10.810.4 文件的处理与随机访问文件的处理与随机访问在在java.iojava.io包中定义了一个包中定义了一个FileFile类专门用来管类专门用来管理磁盘文件和文件夹,而不负责数据的输入输理磁盘文件和文件夹,而不负责数据的输入输出。出。每个每个FileFile类对象表示一个磁盘文件或文件夹,类对象表

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论