第8章输入输出流IO.ppt
《第8章输入输出流IO.ppt》由会员分享,可在线阅读,更多相关《第8章输入输出流IO.ppt(46页珍藏版)》请在三一文库上搜索。
1、第8章 输入输出流I/O,一、输入输出流I/O是计算机的最基本操作。,比如从键盘输入数据、从文件中读取数据或向文件中写数据、通过网络上传或下载数据等。 Java类库的设计者是通过创建大量的类来解决这个难题的。 在java中有关流的操作使用 io 包 import java.io.*;,在JDK1.4中,添加了nio类,用于改进性能及功能。 我们需要学习相当数量的类。另外,很有必要理解I/O类库的演化过程, 本章就介绍Java标准类库中各种各样的类以及它们的用法。,流式I/O,“流(stream)”是个抽象概念,它代表任何有能力产出数据的数据源对象或者是有能力接收数据的接收端对象。 就流的运行方
2、向来说,有两种基本的流是:输入流(Input Stream)和输出流(Output Stream)。可从中读出一系列字节的对象称为输入流。而能向其中写入一系列字节的对象称为输出流。,按处理数据的类型不同,流的分类,流,字节流,字符流,字符流 适用于16位的字符文件 每次读写16位字符 效率较高,字节流 适用于各类文件 每次读写8位字节 效率较低,Java.io中的四个类:,以字节为对象: 输入流:InputStream 输出流:OutputStream 以字符为对象: 输入流: Reader 输出流: Writer,文件处理:File类,在学习那些真正用于在流中读写数据的类之前,让我们先看看一
3、个实用工具,它提供了一个用于帮助我们处理文件目录事务的类库。 File(文件)类。它既能代表一个特定文件的名称又能代表一个目录下的文件集合的名称。如果它指的是一个文件集,我们就可以对此集合调用list()方法,这个方法会返回一个字符数组。 实际上,“文件路径”对这个类来说是个更好的名字。,(1)目录的检查及创建,文件类不仅仅只表示存在的文件或目录。 我们也可以用文件对象来创建新的目录或不存在的整个目录路径。 我们还可以查看文件的特性(如:大小,最后修改日期,读/写),来检查某个文件对象代表的是一个文件还是一个目录,并可以删除这个文件。,(2)目录列表器,假设我们想查看一个目录列表,可以用两种方
4、法列出文件对象。 (1)如果我们调用不带参数的list()方法,便可以获得此文件对象包含的全部列表。 (2)然而,如果我们想获得一个受限列表例如,想得到所有扩展名为.java的文件那么我们就要用到“目录过滤器”,这个类会告诉我们怎样显示符合条件的文件对象。,可以在JDK文档里的类层次结构中查看到。 通过继承,任何Inputstream或Reader衍生而来的类都含有名为read()的基本方法,用于读取单个字节或者字节数组。 同样地,任何自OutputStream或Writer衍生而来的类都含有名为write()的基本方法,用于写单个字节或者字节数组。,InputStream,三个基本的读方法
5、abstract int read() :读取一个字节数据,并返回读到的数据,如果返回-1,表示读到了输入流的末尾。 int read(byte b) :将数据读入一个字节数组,同时返回实际读取的字节数。如果返回-1,表示读到了输入流的末尾。 int read(byte b, int off, int len) :将数据读入一个字节数组,同时返回实际读取的字节数。如果返回-1,表示读到了输入流的末尾。off指定在数组b中存放数据的起始偏移位置;len指定读取的最大字节数。,其它方法 long skip(long n) :在输入流中跳过n个字节,并返回实际跳过的字节数。 void close()
6、 :关闭输入流,释放和这个流相关的系统资源。 void mark(int readlimit) :在输入流的当前位置放置一个标记,如果读取的字节数多于readlimit设置的值,则流忽略这个标记。 void reset() :返回到上一个标记。,java.io包中 InputStream的类层次,InputStream,FileInputStream,ByteArrayInputStream,FilterInputStream,ObjectInputStream,PipedInputStream,DataInputStream,BufferedInputStream,OutputStream,
7、三个基本的写方法 abstract void write(int b) :往输出流中写入一个字节。 void write(byte b) :往输出流中写入数组b中的所有字节。 void write(byte b, int off, int len) :往输出流中写入数组b中从偏移量off开始的len个字节的数据。 其它方法 void flush() :刷新输出流,强制缓冲区中的输出字节被写出。 void close() :关闭输出流,释放和这个流相关的系统资源。,java.io包中 OutputStream的类层次,OutputStream,FileOutputStream,ByteArray
8、OutputStream,FilterOutputStream,ObjectOutputStream,PipedOutputStream,DataOutputStream,BufferedOutputStream,文件流,FileInputStream(字节文件输入流)FileOutputStream 字节文件输出流) 节点流,用于从文件中读取或往文件中写入字节流。,二进制文件的处理,文件对象的建立 File fp=new File(“file1.dat”); FileInputStream类:可以用它来从文件中读取字节。 FileOutputStream类:创建一个可用来将字节写入文件的输出
9、流。,FileInputStream类的常用方法: read( ):从流中读入数据 close( ):关闭流 FileOutputStream类的常用方法: write(byte b , int off, int len ):在数组b中,从off开始,写入len个字节的数据。,缓冲字节流: BufferedInputStream和BufferedOutputStream,过滤流,需要使用已经存在的节点流来构造,提供带缓冲的读写,提高了读写的效率。,DataInputStream(数据输入流)DataOutputStream(数据输出流 ),过滤流,需要使用已经存在的节点流来构造,提供了读写Ja
10、va中的基本数据类型的功能。,PipedInputStream和PipedOutputStream,管道流,用于线程间的通信。一个线程的PipedInputStream对象从另一个线程的PipedOutputStream对象读取输入。要使管道流有用,必须同时构造管道输入流和管道输出流。,Java I/O库的设计原则,Java的I/O库提供了一个称做链接的机制,可以将一个流与另一个流首尾相接,形成一个流管道的链接。通过流的链接,可以动态的增加流的功能,而这种功能的增加是通过组合一些流的基本功能而动态获取的。,I/O流的链接,FileInputStream,BufferedInputStream,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 输入输出 IO
链接地址:https://www.31doc.com/p-2567502.html