CompressionCodec.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:4k
源码类别:

网格计算

开发平台:

Java

  1. /*
  2.  * Licensed to the Apache Software Foundation (ASF) under one
  3.  * or more contributor license agreements.  See the NOTICE file
  4.  * distributed with this work for additional information
  5.  * regarding copyright ownership.  The ASF licenses this file
  6.  * to you under the Apache License, Version 2.0 (the
  7.  * "License"); you may not use this file except in compliance
  8.  * with the License.  You may obtain a copy of the License at
  9.  *
  10.  *     http://www.apache.org/licenses/LICENSE-2.0
  11.  *
  12.  * Unless required by applicable law or agreed to in writing, software
  13.  * distributed under the License is distributed on an "AS IS" BASIS,
  14.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15.  * See the License for the specific language governing permissions and
  16.  * limitations under the License.
  17.  */
  18. package org.apache.hadoop.io.compress;
  19. import java.io.IOException;
  20. import java.io.InputStream;
  21. import java.io.OutputStream;
  22. /**
  23.  * This class encapsulates a streaming compression/decompression pair.
  24.  */
  25. public interface CompressionCodec {
  26.   /**
  27.    * Create a {@link CompressionOutputStream} that will write to the given 
  28.    * {@link OutputStream}.
  29.    * 
  30.    * @param out the location for the final output stream
  31.    * @return a stream the user can write uncompressed data to have it compressed
  32.    * @throws IOException
  33.    */
  34.   CompressionOutputStream createOutputStream(OutputStream out) 
  35.   throws IOException;
  36.   
  37.   /**
  38.    * Create a {@link CompressionOutputStream} that will write to the given 
  39.    * {@link OutputStream} with the given {@link Compressor}.
  40.    * 
  41.    * @param out the location for the final output stream
  42.    * @param compressor compressor to use
  43.    * @return a stream the user can write uncompressed data to have it compressed
  44.    * @throws IOException
  45.    */
  46.   CompressionOutputStream createOutputStream(OutputStream out, 
  47.                                              Compressor compressor) 
  48.   throws IOException;
  49.   /**
  50.    * Get the type of {@link Compressor} needed by this {@link CompressionCodec}.
  51.    * 
  52.    * @return the type of compressor needed by this codec.
  53.    */
  54.   Class<? extends Compressor> getCompressorType();
  55.   
  56.   /**
  57.    * Create a new {@link Compressor} for use by this {@link CompressionCodec}.
  58.    * 
  59.    * @return a new compressor for use by this codec
  60.    */
  61.   Compressor createCompressor();
  62.   
  63.   /**
  64.    * Create a stream decompressor that will read from the given input stream.
  65.    * 
  66.    * @param in the stream to read compressed bytes from
  67.    * @return a stream to read uncompressed bytes from
  68.    * @throws IOException
  69.    */
  70.   CompressionInputStream createInputStream(InputStream in) throws IOException;
  71.   
  72.   /**
  73.    * Create a {@link CompressionInputStream} that will read from the given 
  74.    * {@link InputStream} with the given {@link Decompressor}.
  75.    * 
  76.    * @param in the stream to read compressed bytes from
  77.    * @param decompressor decompressor to use
  78.    * @return a stream to read uncompressed bytes from
  79.    * @throws IOException
  80.    */
  81.   CompressionInputStream createInputStream(InputStream in, 
  82.                                            Decompressor decompressor) 
  83.   throws IOException;
  84.   /**
  85.    * Get the type of {@link Decompressor} needed by this {@link CompressionCodec}.
  86.    * 
  87.    * @return the type of decompressor needed by this codec.
  88.    */
  89.   Class<? extends Decompressor> getDecompressorType();
  90.   
  91.   /**
  92.    * Create a new {@link Decompressor} for use by this {@link CompressionCodec}.
  93.    * 
  94.    * @return a new decompressor for use by this codec
  95.    */
  96.   Decompressor createDecompressor();
  97.   
  98.   /**
  99.    * Get the default filename extension for this kind of compression.
  100.    * @return the extension including the '.'
  101.    */
  102.   String getDefaultExtension();
  103. }