如何实现自己的输入流


1、 首先必须继承InputStream

2、实现read方法

3、由于ptr位置的使用,使得流的访问,一次必须读完。


public class MyownStream extends InputStream

{
    protected byte[] data;
    protected int ptr;
    protected int mark = 0;
    public MyownStream(byte[] b)
    {
    data = b;
    }
@Override
public int read() throws IOException {

return ptr>data.length ? (data[ptr++]):-1;
}
@Override
public int available() throws IOException {

return data.length - ptr;
}
@Override
public void close() throws IOException {
ptr = data.length;
}
@Override
public synchronized void reset() throws IOException {
if(mark == 0 || mark > data.length)
{
throw new IOException("the position is available");
}
else 
{
  ptr = mark;
}
}
@Override
public boolean markSupported() {
return true;
}
@Override
public int read(byte[] b, int off, int len) throws IOException {
   int length = -1;
if(ptr >= data.length || len < 0)
   {
length = -1;
   }
   if(ptr +data.length > data.length )
   {
    length =  data.length - ptr;
   }
   if(len == 0)
   {
    length = 0;
   }
   return length;
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值