java stream流

InputStream 

      1.abstract int read(); 这个方法读入一个字节,并返回读入的字节,如果在遇到输入源结尾是返回-1

      InputStream类还有其他非抽象方法,比如read(byte[]) 读入一个字节数组,或者跳过大量的字节skip(long),这些方法都调用read()方法。


OutputStream 

     和InputStream差不多,定义了

     abstract void write(int b); 他可以向某个位置写出一个字节。



read和write方法在执行时都讲阻塞,直到字节确实被写出或者读入,这就意味如果流不能 被立即访问(通常是因为网络连接忙),那么当前的线程被阻塞。

available方法使我们可以去检查当前可读入的字节数量。

有1个办法保证不可能被阻塞

int num = in.available();

if(num>0){

byte[] data = new byte[num];

in.read(data);

}


当完成流的读写是,应该通过调用close方法来关闭它,这个调用会释放十分有限的操作系统资源,关闭输出流的同时还会冲刷用于输出流的缓存区:

所有被临时置于缓冲区中,以便用更大的包的形式传递的字符在关闭输出流程是都将被送出。特别是,如果不关闭文件,那么写出字节的最后一个包

可能将永远也得不到传递,当然,我们还可以用flush人为的冲刷这些输出


InputStream中的方法。

abstract int read() 从数据中读入1个字节,并放回改字节,这个read方法在碰到流的结尾时返回-1


int read(byte[] a) 读入一个字节数组,并返回实际读入的字节数,或者碰到流的结尾时返回-1,这个read 方法最多 对人 a.lenth个字节。


int read(byte[] a, int offset,int len)读入一个字节数组,并返回实际读入的字节数,或者碰到流的结尾时返回-1

a:数据读入的数组

offset 第1个读入字节应该被放置位置为a重的偏移量

len 读入字节的最大数据


long skip(long n) 在输入流跳过n个字节,放回实际跳过的字节数,如果碰到流的结尾,则可能小于n,但是自己本地测试,好像不是。


int available(),返回在不阻塞的情况下可获取的字节数


void close 关闭这个输入流


void mark(int readlimit)在输入流的当前位置打一个标记。


void reset() 返回到最后一个标记


outputstream

1.abstract void wirte(int b)

2.void write(byte[] b)

3.void write(byte[] b ,int offset,int len)

4.void close();

5.void flush();


InputStream和OutputStream 类可以读写单个字节或者字节数组,要想读写字符串或者数组,就需要更强大的子类,

比如DataInputStream 和 DataoutputStream 可以已二进制格式读写所有的基本java类型

比如我们直接读取字符,数字等等。

DataInputStream  能与机器无关的方式,直接重字节输入流读取java基本类型和String类型

DataInputStream  是继承FilterInputStream,这时候就要说到经典的装饰着模式。








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值