Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
   * with the License.  You may obtain a copy of the License at
   *
  *     http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 package com.indeed.util.compress;
 
 
 public class CompressorStream extends CompressionOutputStream {
   protected Compressor compressor;
   protected byte[] buffer;
   protected boolean closed = false;
   
   public CompressorStream(OutputStream outCompressor compressorint bufferSize) {
     super(out);
 
     if (out == null || compressor == null) {
       throw new NullPointerException();
     } else if (bufferSize <= 0) {
       throw new IllegalArgumentException("Illegal bufferSize");
     }
 
     this. = compressor;
      = new byte[bufferSize];
   }
 
   public CompressorStream(OutputStream outCompressor compressor) {
     this(outcompressor, 512);
   }
  
  
Allow derived classes to directly set the underlying stream.

Parameters:
out Underlying output stream.
 
   protected CompressorStream(OutputStream out) {
     super(out);
   }
 
   public void write(byte[] bint offint lenthrows IOException {
     // Sanity checks
     if (.finished()) {
       throw new IOException("write beyond end of stream");
     }
     if ((off | len | (off + len) | (b.length - (off + len))) < 0) {
       throw new IndexOutOfBoundsException();
     } else if (len == 0) {
       return;
     }
 
     .setInput(bofflen);
     while (!.needsInput()) {
       compress();
     }
   }
 
   protected void compress() throws IOException {
     int len = .compress(, 0, .);
     if (len > 0) {
       .write(, 0, len);
     }
   }
 
   public void finish() throws IOException {
     if (!.finished()) {
       .finish();
       while (!.finished()) {
         compress();
       }
     }
   }
 
   public void resetState() throws IOException {
     .reset();
   }
   
   public void close() throws IOException {
     if (!) {
       finish();
       .close();
        = true;
     }
   }
 
  private byte[] oneByte = new byte[1];
  public void write(int bthrows IOException {
    [0] = (byte)(b & 0xff);
    write(, 0, .);
  }
New to GrepCode? Check out our FAQ X