2012java教程第8章 输入和输出处理_第1页
2012java教程第8章 输入和输出处理_第2页
2012java教程第8章 输入和输出处理_第3页
2012java教程第8章 输入和输出处理_第4页
2012java教程第8章 输入和输出处理_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、JAVA程序语言设计,陈明 编著,第八章 输入和输出处理,输入/输出流概述 基本的输入/输出流字节流 字符流Reader/Writer的处理 文件 标准的输入/输出 管道流PipedInputStream/PipedOutputStream类 过滤流 对象的串行化(Serialization),输入/输出流概述,输入流(input stream)是数据从外部设备(通常是键盘或鼠标)到计算机,而输出流(output stream)是数据从计算机到外部设备(计算机屏幕或文件)。 1字节流; 2字符流; 3对象流; 4其它,基本的输入/输出流字节流,文件操作的一般方法: (1)生成一个输入输出文件类

2、的对象(根据所要操作的类型); (2)调用此类的成员函数实现文件数据内容的读写; (3)关闭此文件。,基本的输入/输出流字节流,在Java I/O编程中主要应该注意的一般要点: (1)异常的捕获-由于包java.io中几乎所有的类都声明有I/O异常,因此程序应该对这些异常加以处理。 (2)流结束的判断-方法read()的返回值为-1时;readLine()的返回值为null时。,InputStream类,从流中读取数据 int read(); int read(byte b); int read(byte b ,int off,int len); long skip(long n); int

3、available(); close() 输入流中的标记 void mark(int readlimit); void reset(); boolean markSupported();,OutputStream类,1输出数据 void write(int b); void write(byte b); void write(byte b, int off, int len) void flush(); 2关闭流,Reader和Writer,1Reader类是处理所有字符流输入类的父类。 读取字符 标记流 关闭流 2Writer类是处理所有字符流输出类的父类。 向输出流写入字符 flush(

4、) 关闭流,InputStreamReader和OutputStreamWriter,1. 生成流对象 2. 读入和写出字符 3. 获取当前编码方式 4. 关闭流,BufferedReader和BufferedWriter,为提高字符流的处理效率,可以采用缓冲机制。JDK引入了BufferedReader和BufferedWriter类,用来对字符流进行成批的处理。其中的方法readLine()是读出一行字符,而newLine()则是写入一行字符,由于提供缓冲机制,把任意的输入流或输出流“捆绑”到缓冲流上将获得性能的提高,同时也可以在创建缓冲流对象进设置缓冲区的大小。 1. 生成流对象 2.

5、读入/写出字符,FileReader和FileWriter类,由于InputStreamReader和OutputStreamWriter字符流类在创建流类的对象时必须以一个字节流作为原始的数据流来打开文件。为了能够直接将一个具体的文件名的文件直接转换为字符流类的对象,在java.io包中还为程序员提供了InputStreamReader和OutputStreamWriter字符流类的两个子类FileReader和FileWriter. FileReader fr=new FileReader(“c:docJava.doc”); FileWriter fw=new FileWrtier(“c:

6、docJava.doc”);,文 件,文件可分为文本文件和二进制文件。用文本编辑器或程序读取文本文件时,该文件包含一串字符。例如,包含Java程序的文件就是文本文件。有时文本文件也称作ASCII文件,因为它使用ASCII机制来存储数据。如果一个文件所含的内容必须用二进制的形式来进行处理,那么该文件就叫做二进制文件。 文本文件的最大的优点是可以用文本编辑器进行读写,而二进制文件的所有读写必须由程序完成。,File类,File类主要用来描述系统中的文件在磁盘上的存储情况,而File类的对象主要用来获取文件本身的一些信息,例如文件所在的目录、文件的长度、文件读写权限等,此外,还可以用File对象来对

7、文件系统做一些查询与设置的动作,但不涉及对文件的读写操作。File 类的实例是不可变的。也就是说,一旦创建,File 对象表示的抽象路径名将永不改变。 要注意的是,不管是文件还是目录,在Java中都是以File 的实例来表示。,FileInputStream类,如果用户的文件读取需求比较简单,那么用户可以使用类InputStream派生出来的简单输入类FileInputStream来完成。类FileInputStream重写了父类InputStream中的方法read()、skip()、available()和close(),继承方法mark()和reset()。有下列3种方法可创建FileI

8、nputStream对象: FileInputStream(File file) FileInputStream(FileDescription fdObj) FileInputStream(String name),FileInputStream/ FileOutputStream类,本地文件读写编程的基本过程为: (1)生成文件流对象(对文件读操作时应该为FileInputStream类,而文件写应该为FileOutputStream类); (2)处理I/O异常; (3)调用FileInputStream或FileOutputStream类中的功能函数如read()、write(int b

9、)等)读写文件内容; (4)关闭文件close()。,FileInputStream类,下列3种方法可创建FileInputStream对象: FileInputStream(File file) FileInputStream(FileDescription fdObj) FileInputStream(String name) 在读文件时有几个必要流程如下: 使用文件输入流读取文件夹 处理I/O异常 从输入流中读取字节 关闭流,FileOutputStream类,与类FileInputStream对应的是类FileOutputStream。类FileOutputStream提供了写文件的能

10、力,它重写的父类OutputStream中的方法write()和close()。创建FileOutputStream对象也有3种方法: FileOutputStream(String name) FileOutputStream(File file) FileOutputStream(FileDescriptor fdObj),随机访问文件,随机文件需要允许对文件进行随机的读写。即当我们想对一个文件进行读写操作时,我们创建一个指向该文件的RandomAccessFile流即可,这样我们既可以从这个流中读取文件的数据,也可以通过这个流写入数据到文件。,标准的输入/输出,Java中的标准输入/输出

11、概念与C语言中的类似,有3种用java.lang.system类管理的标准流,即标准输入流System.in、标准输出流System.out和标准错误流System.err。 标准输入流; 标准输出流。,管道流,管道是由系统维护的一个缓冲区,当然程序员也可以自己直接指定该缓冲区的大小(只需要设置管道流类中的PIPE_SIZE属性的值)。当生产者生产出数据后,只需要将数据写入管道中,消费者只需要从管道中读取所需要的数据。利用管道的这种机制,可以将一个线程的输出结果直接连接到另一个线程的输入端口,实现两者之间的数据直接传送。,过滤流,过滤流在读/写数据的同时可以对数据进行处理,它提供了同步机制,使

12、得某一时刻只有一个线程可以访问一个I/O流,以防止多个线程同时对一个I/O流进行操作所带来的意想不到的结果。类FilterInputStream和FilterOutputStream分别作为所有过滤输入流和输出流的父类。,过滤流,几种常见的过滤流: 缓冲流BufferedInputStream和BufferedOutputStream 数据I/O接口DataInput/DataOutput: 数据流DataInputStream 和 DataOutputStream LineNumberInputStream PushbackInputStream PrintStream,对象的串行化(Serialization),对象的寿命通常随着生成该对象的程序的终止而终止。有时候,可能需要将对象的状态保存下来,在

温馨提示

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

评论

0/150

提交评论