IO结构体系和基础应用(1)
IO结构体系和基础应用(1)
1.stream(流)的概念
java中将输入和输出抽象为叫做流
2. 流的分类
流按方向分为输入流(InputStream)和输出流(OutputStream)。
按性质可分为:
① 基础字节流(原始流):InputStream和 OutputStream是以最小数据单位
读取的流,即每次读写一个字节,字节流是直接连接到输入源的流。
②过滤流(缓冲流):它是用来包装基础流以提供更好的特性,如提供缓冲功
能的BufferedInputStream和BufferedOutputStream;过滤流是用来包装基
础流和其他的流,并不直接连接数据源。
③数据类型流:用于直接从流中读取指定的数据类型的数据(如int,long等)
④对象流:在流中直接直接读取java对象
3.InputStream抽象类
InputStream是一个抽象类,是所有输入流的父类。直接子类包括AudioInputStream,
ByteArrayInputStream, FileInputStream, FilterInputStream, InputStream,
ObjectInputStream, PipedInputStream, SequenceInputStream,
StringBufferInputStream
它定义的几个重要方法:
int available() :流中可读取的有效字节长度(以byte计数)
void close():关闭此输入流并释放与该流关联的所有系统资源。
int read() : 从输入流中读取数据的下一个字节作为一个byte值,如果流
已读到末尾 ,则返回-1.
int read(byte[] b) :从输入流中读取一定数量的字节,并将其存储在缓
冲区数组 b 中。
4.FileInputStream
它是InputStream的直接子类,用于 构造从文件中读取的流,它的两个常用构造器:
FileInputStream(File file) :通过一个文件对象做参数构造输入流对象。
FileInputStream(String name):
通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件
系统中的路径名 name 指定。
5.OutputStream 类
直接已知子类:ByteArrayOutputStream, FileOutputStream, FilterOutputStream,
ObjectOutputStream, OutputStream, PipedOutputStream
常用方法:
void close():关闭此输出流并释放与此流有关的所有系统资源。
void flush() :刷新此输出流并强制写出所有缓冲的输出字节。
void write(byte[] b): 将 b.length 个字节从指定的 byte 数组写入此输出流。
void write(byte[] b, int off, int len) :
将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。
abstract void write(int b) : 将指定的字节写入此输出流。
6.FileOutputStream类
它的常用构造器:
FileOutputStream(File file):
创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
FileOutputStream(File file, boolean append) :
创建一个向指定 File 对象表示的文件中写入数据的文件输出流,append表示输出
到文件中的数据是否接在文件中已有的数据后面。
FileOutputStream(String name) :
创建一个向具有指定名称的文件中写入数据的输出文件流。
7.缓冲流
缓冲流即过滤流,常用的有BufferedInputStream和 BufferedOutputStream 。
输入缓冲流 BufferedInputStream的两种常用构造器:
BufferedInputStream(InputStream in):创建一个 BufferedInputStream 并保存其
参数,即输入流 in,以便将来使用。默认缓冲区大小在jdk1.6中为8192K。
BufferedInputStream(InputStream in, int size) : 创建具有指定缓冲区大小的
BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。
输出缓冲流 BufferedOutputStream 的两种常用构造器:
BufferedOutputStream(OutputStream out) :使用默认的缓冲区创建一个新的缓冲
输出流,以将数据 写入指定的底层输出流。
BufferedOutputStream(OutputStream out, int size) : 创建一个新的缓冲输出流,
以将具有指定缓冲区大小的数据写入指定的底层输出流。