Java.IO.InputStream-OutputStream

来源:互联网 发布:淘宝音像制品许可证 编辑:程序博客网 时间:2024/05/18 01:04

InputStream
int read()从数据流中读取一个字节,如果读不到会阻塞

int read(byte[] b)从数据流中读取字节放入字节数组并返回实际读取的字节数。最多读取的字节长度是这个字节数组的长度

int read(byte[] b,int off, int len)从数据流中读取len个字节字节数组的off下标开始存入字节数组

long skip(long n)主要用在包装流中的。流只能顺序读不能跳跃读,但是包装流可以用skip方法跳跃读取

int available()返回当前数据流中可读取的字节数。在读取之前用available()判断数据流中是否有数据字节

void mark(int readlimit) 用在输入流中建立一个标记,建立标记以后,mark方法接收一个参数从标记开始最多读取readlimit个字节

void reset()与mark配合使用,让指针回到以前标记处,例如建立标记a,读出n个字节后调用reset(),读取数据仍然从标记a处开始
boolean markSupported()返回当前流对象是否支持mark和reset方法

void close()用于完成一个流的所有操作后关闭流,以释放与这个流相关的资源

InputStream类是一个抽象类,程序中实际使用的是InputStream类的各种子类对象,不是所有的子类都支持InputStream所提供的所有方法,比如mark,skip,reset方法对节点流就不适用,只适用于包装类

有了垃圾回收期,为什么还要调用close方法:当程序创建了一个IO流对象的同时,也创建了一个叫流的东西,计算机内存中产生了两个东西,一个是java程序的类实例对象,一个是系统产生的某种资源。垃圾回收器只管理程序当中的类实例对象,不会管理系统产生的资源。所以用close方法通知系统释放这个对象所表示的流资源。

OutputStream
程序可以向其中连续写入字节的对象叫输出流,在java中用OutputStream类来描述所有输出流的抽象概念,也是一个抽象类。描述了流类写入数据时的通用方法

outputStream类的方法:
void write(int b) 就是将一个整数中的最低一个字节的内容写入到输出流中,最高字节部分被舍弃。
void write(byte[] b)将字节数组当中的所有字节内容都写入到输出流对象中
void write(byte[] b,int off,int len)
void flush用于将内存缓冲区当中的内容彻底的清空并输出的IO输出设备中:提高了内存的使用率,write方法并没有真正的写入到IO设备,还有机会撤回部分写入的数据,使用缓冲区能提高计算机的效率,会降低程序自身的效率。在网络流中会造成一些数据的滞后,这样就降低了他的实时性效率。


对于InputStream输入流中也可以使用flush方法,用于将目标设备中一次将大量的数据读取到内存缓存区中,然后在缓存区中一行一行的读取到流中来

即使内存区数据没有存满,仍然可以调用flush方法将缓冲数据强制写入到外部设备习惯上称这个过程为刷新不是所有的Outputstream的子类都支持flush方法,只有那些个使用了缓存区的子类才能使用这个方法
当调用void close()方法,关闭输出流时缓存区中的内容也会输出到目标设备中

原创粉丝点击