package jef.tools.zip;
import java.io.IOException;
import java.io.InputStream;
public abstract class AbstractVolchgInoputStream extends InputStream{
protected InputStream in;
@Override
public int read() throws IOException {
if(in==null)return -1;
int n= in.read();
while(n==-1 && changeVolumn()){
n=in.read();
}
return n;
}
@Override
public int read(byte[] b, int off, int len) throws IOException {
int size=in.read(b, off, len);
while(size==-1 && changeVolumn()){
size=in.read(b,off,len);
}
return size;
}
@Override
public long skip(long n) throws IOException {
return in.skip(n);
}
@Override
public int available() throws IOException {
if(in==null)return 0;
return in.available();
}
@Override
public void close() throws IOException {
if(in!=null)
in.close();
in=null;
}
@Override
public synchronized void mark(int readlimit) {
in.mark(readlimit);
}
@Override
public synchronized void reset() throws IOException {
in.reset();
}
@Override
public boolean markSupported() {
return in.markSupported();
}
protected abstract boolean changeVolumn() throws IOException;
}