2012java教程第8章 输入和输出处理

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

LOGOJAVA程序语言设计陈明编著第八章输入和输出处理输入/输出流概述基本的输入/输出流—字节流字符流Reader/Writer的处理文件标准的输入/输出管道流PipedInputStream/PipedOutputStream类过滤流对象的串行化(Serialization)输入/输出流概述输入流(inputstream)是数据从外部设备(通常是键盘或鼠标)到计算机,而输出流(outputstream)是数据从计算机到外部设备(计算机屏幕或文件)。1.字节流;2.字符流;3.对象流;4.其它基本的输入/输出流—字节流文件操作的一般方法:(1)生成一个输入输出文件类的对象(根据所要操作的类型);(2)调用此类的成员函数实现文件数据内容的读写;(3)关闭此文件。基本的输入/输出流—字节流在JavaI/O编程中主要应该注意的一般要点:(1)异常的捕获---由于包java.io中几乎所有的类都声明有I/O异常,因此程序应该对这些异常加以处理。(2)流结束的判断---方法read()的返回值为-1时;readLine()的返回值为null时。InputStream类从流中读取数据intread();intread(byteb[]);intread(byteb[],intoff,intlen);longskip(longn);intavailable();close()输入流中的标记voidmark(intreadlimit);voidreset();booleanmarkSupported();OutputStream类1.输出数据voidwrite(intb);voidwrite(byteb[]);voidwrite(byteb[],intoff,intlen)voidflush();2.关闭流Reader和Writer1.Reader类是处理所有字符流输入类的父类。读取字符标记流关闭流2.Writer类是处理所有字符流输出类的父类。向输出流写入字符flush()关闭流InputStreamReader和OutputStreamWriter1.生成流对象2.读入和写出字符3.获取当前编码方式4.关闭流BufferedReader和BufferedWriter为提高字符流的处理效率,可以采用缓冲机制。JDK引入了BufferedReader和BufferedWriter类,用来对字符流进行成批的处理。其中的方法readLine()是读出一行字符,而newLine()则是写入一行字符,由于提供缓冲机制,把任意的输入流或输出流“捆绑”到缓冲流上将获得性能的提高,同时也可以在创建缓冲流对象进设置缓冲区的大小。1.生成流对象2.读入/写出字符FileReader和FileWriter类由于InputStreamReader和OutputStreamWriter字符流类在创建流类的对象时必须以一个字节流作为原始的数据流来打开文件。为了能够直接将一个具体的文件名的文件直接转换为字符流类的对象,在java.io包中还为程序员提供了InputStreamReader和OutputStreamWriter字符流类的两个子类FileReader和FileWriter.FileReaderfr=newFileReader(“c:\\doc\\Java.doc”);FileWriterfw=newFileWrtier(“c:\\doc\\Java.doc”);文件文件可分为文本文件和二进制文件。用文本编辑器或程序读取文本文件时,该文件包含一串字符。例如,包含Java程序的文件就是文本文件。有时文本文件也称作ASCII文件,因为它使用ASCII机制来存储数据。如果一个文件所含的内容必须用二进制的形式来进行处理,那么该文件就叫做二进制文件。文本文件的最大的优点是可以用文本编辑器进行读写,而二进制文件的所有读写必须由程序完成。File类File类主要用来描述系统中的文件在磁盘上的存储情况,而File类的对象主要用来获取文件本身的一些信息,例如文件所在的目录、文件的长度、文件读写权限等,此外,还可以用File对象来对文件系统做一些查询与设置的动作,但不涉及对文件的读写操作。File类的实例是不可变的。也就是说,一旦创建,File对象表示的抽象路径名将永不改变。要注意的是,不管是文件还是目录,在Java中都是以File的实例来表示。FileInputStream类如果用户的文件读取需求比较简单,那么用户可以使用类InputStream派生出来的简单输入类FileInputStream来完成。类FileInputStream重写了父类InputStream中的方法read()、skip()、available()和close(),继承方法mark()和reset()。有下列3种方法可创建FileInputStream对象:FileInputStream(Filefile)FileInputStream(FileDescriptionfdObj)FileInputStream(Stringname)FileInputStream/FileOutputStream类本地文件读写编程的基本过程为:(1)生成文件流对象(对文件读操作时应该为FileInputStream类,而文件写应该为FileOutputStream类);(2)处理I/O异常;(3)调用FileInputStream或FileOutputStream类中的功能函数如read()、write(intb)等)读写文件内容;(4)关闭文件close()。FileInputStream类下列3种方法可创建FileInputStream对象:FileInputStream(Filefile)FileInputStream(FileDescriptionfdObj)FileInputStream(Stringname)在读文件时有几个必要流程如下:使用文件输入流读取文件夹处理I/O异常从输入流中读取字节关闭流FileOutputStream类与类FileInputStream对应的是类FileOutputStream。类FileOutputStream提供了写文件的能力,它重写的父类OutputStream中的方法write()和close()。创建FileOutputStream对象也有3种方法:FileOutputStream(Stringname)FileOutputStream(Filefile)FileOutputStream(FileDescriptorfdObj)随机访问文件随机文件需要允许对文件进行随机的读写。即当我们想对一个文件进行读写操作时,我们创建一个指向该文件的RandomAccessFile流即可,这样我们既可以从这个流中读取文件的数据,也可以通过这个流写入数据到文件。标准的输入/输出Java中的标准输入/输出概念与C语言中的类似,有3种用java.lang.system类管理的标准流,即标准输入流System.in、标准输出流System.out和标准错误流System.err。标准输入流;标准输出流。管道流管道是由系统维护的一个缓冲区,当然程序员也可以自己直接指定该缓冲区的大小(只需要设置管道流类中的PIPE_SIZE属性的值)。当生产者生产出数据后,只需要将数据写入管道中,消费者只需要从管道中读取所需要的数据。利用管道的这种机制,可以将一个线程的输出结果直接连接到另一个线程的输入端口,实现两者之间的数据直接传送。过滤流过滤流在读/写数据的同时可以对数据进行处理,它提供了同步机制,使得某一时刻只有一个线程可以访问一个I/O流,以防止多个线程同时对一个I/O流进行操作所带来的意想不到的结果。类FilterInputStream和FilterOutputStream分别作为所有过滤输入流和输出流的父类。过滤流几种常见的过滤流:缓冲流BufferedInputStream和BufferedOutputStream数据I/O接口DataInput/DataOutput:数据流DataInputStream和DataOutputStreamLineNumberInputStreamPushbackInputStreamPrintStream对象的串行化(Serialization)对象的寿命通常随着生成该对象的程序的终止而终止。有时候,可能需要将对象的状态保存下来,在需要时再将对象恢复。我们把对象的这种能记录自己的状态以便将来再生的能力,叫做对象的持续性(persistence)。对象通过写出描述自己状态的数值来记录自己,这个过程叫对象的串行化(Serialization)。串行化的目的是为java的运行环境提供一组特性,其主要任务是写出对象实例变量的数值。串行化的注意事项1.串行化能保存的元素2.transient关键字3.定制串行化

1 / 24
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功