package org.amse.ys.zip; import java.io.*; public class NoCompressionDecompressor extends Decompressor { private final LocalFileHeader myHeader; private final MyBufferedInputStream myStream; private int myCurrentPosition; public NoCompressionDecompressor(MyBufferedInputStream is, LocalFileHeader header) { super(); myHeader = header; myStream = is; } public int read(byte b[], int off, int len) throws IOException { int i = 0; for (; i < len; ++i) { int value = read(); if (value == -1) { break; } if (b != null) { b[off + i] = (byte)value; } } return (i > 0) ? i : -1; } public int read() throws IOException { if (myCurrentPosition < myHeader.CompressedSize) { myCurrentPosition++; return myStream.read(); } else { return -1; } } public int available() throws IOException { return (myHeader.UncompressedSize - myCurrentPosition); } }