当前位置:文档之家› 第八章 JAVA文件和输入输出流.

第八章 JAVA文件和输入输出流.

同样地,任何自OutputStream或Writer 衍生而来的类都含有名为write()的 基本方法,用于写单个字节或者字节 数组。
InputStream
三个基本的读方法
abstract int read() :读取一个字节数据,并返回 读到的数据,如果返回-1,表示读到了输入流的 末尾。
PipedInputStream
OutputStream
三个基本的写方法
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
ByteArrayOutputStream
void reset() :返回到上一个标记。
java.io包中 InputStream的类层次
FileInputStream
InputStream
ByteArrayInputStream
FilterInputStream
ObjectInputStream
DataInputStream BufferedInputStream
(2)然而,如果我们想获得一个受限列表— —例如,想得到所有扩展名为.java的文件— —那么我们就要用到“目录过滤器”,这 个类会告诉我们怎样显示符合条件的文件 对象。
可以在JDK文档里的类层次结构中查看 到。
通过继承,任何Inputstream或Reader衍 生而来的类都含有名为read()的基本 方法,用于读取单个字节或者字节数 组。
int read(byte[] b) :将数据读入一个字节数组,同 时返回实际读取的字节数。如果返回-1,表示读 到了输入流的末尾。
int read(byte[] b, int off, int len) :将数据读入一个 字节数组,同时返回实际读取的字节数。如果返 回-1,表示读到了输入流的末尾。off指定在数组b 中存放数据的起始偏移位置;len指定读取的最大 字节数。
在JDK1.4中,添加了nio类,用于改进 性能及功能。
我们需要学习相当数量的类。另外, 很有必要理解I/O类库的演化过程,
本章就介绍Java标准类库中各种各样的 类以及它们的用法。
流式I/O
“流(stream)”是个抽象概念,它代 表任何有能力产出数据的数据源对象 或者是有能力接收数据的接收端对象。
第8章 输入输出流I/O
一、输入输出流I/O是计算机的最基本操作。
比如从键盘输入数据、从文件中读取 数据或向文件中写数据、通过网络上 传或下载数据等。
Java类库的设计者是通过创建大量的 类来解决这个难题的。
在java中有关流的操作使用 io 包 import java.io.*;
适用于16位的字符文件 每次读写16位字符 效率较高
Java.io中的四个类:
以字节为对象: 输入流:InputStream 输出流:OutputStream
以字符为对象: 输入流: Reader 输出流: Writer
文件处理:File类
在学习那些真正用于在流中读写数据的类 之前,让我们先看看一个实用工具,它提 供了一个用于帮助我们处理文件目录事务 的类库。
其它方法
long skip(long n) :在输入流中跳过n个字节,并 返回实际跳过的字节数。 void close() :关闭输入流,释放和这个流相关的 系统资源。
void mark(int readlimit) :在输入流的当前位置放 置一个标记,如果读取的字节数多于readlimit设置 的值,则流忽略这个标记。
FilterOutputStream ObjectOutputStream PipedOutputStream
DataOutputStream
BufferedOutputStream
文件流
FileInputStream(字节文件输入流) FileOutputStream 字节文件输出流) 节点流,用于从文件中读取或往文件 中写入字节流。
File(文件)类。它既能代表一个特定文件的 名称又能代表一个目录下的文件集合的名 称。如果它指的是一个文件集,我们就可 以对此集合调用list()方法,这个方法会 返回一个字符数组。
实际上,“文件路径”对这个类来说是个 更好的名字。
(1)目录的检查及创建
文件类不仅仅只表示存在的文件或目 录。
我们也可以用文件对象来创建新的目 录或不存在的整个目录路径。
我们还可以查看文件的特性(如:大 小,最后修改日期,读/写),来检查 某个文件对象代表的是一个文件还是 一个目录,并可以删除这个文件。
(2)目录列表器
假设我们想查看一个目录列表,可以用两 种方法列出文件对象。
(1)如果我们调用不带参数的list()方法, 便可以获得此文件对象包含的全部列表。
二进制文件的处理
文件对象的建立
File fp=new File(“file1.dat”); FileInputStream类:可以用它来从
文件中读取字节。 FileOutputStream类:创建一个可用
来将字节写入文件的输出流。
FileInputStream类的常用方法:
就流的运行方向来说,有两种基本的 流是:输入流(Input Stream)和输出流 (Output Stream)。可从中读出一系列字 节的对象称为输入流。而能向其中写 入一系列字节的对象称为输出流。
按处理数据的类型
字节流
适用于各类文件
每次读写8位字节 效率较低
字符流
相关主题