Class CompressionManager

java.lang.Object
nom.tam.fits.compress.CompressionManager

public final class CompressionManager extends Object
(for internal use) Decompression of compressed FITS files of all supported types (.gz, .Z, .bz2). It autodetects the type of compression used based on the first 2-bytes of the compressed input stream. When possible, preference will be given to perform the decompression using a system command (uncompress or bzip2, which are likely faster for large files). If such a tool is not available, then the Apache common-compress classes will be used to the same effect.
See Also:
  • Field Details

    • ONE_MEGABYTE

      public static final int ONE_MEGABYTE
      bytes in a megabyte (MB)
      See Also:
  • Method Details

    • decompress

      public static InputStream decompress(InputStream compressed) throws FitsException
      This method decompresses a compressed input stream. The decompression method is selected automatically based upon the first two bytes read.
      Parameters:
      compressed - The compressed input stream
      Returns:
      A stream which wraps the input stream and decompresses it. If the input stream is not compressed, a pushback input stream wrapping the original stream is returned.
      Throws:
      FitsException - when the stream could not be read or decompressed
    • isCompressed

      public static boolean isCompressed(File file)
      Is a file compressed? (the magic number in the first 2 bytes is used to detect the compression.
      Parameters:
      file - file to test for compression algorithms
      Returns:
      true if the file is compressed
    • isCompressed

      public static boolean isCompressed(String filename)

      Checks if a file is compressed. If the file by the name exists, it will check the magic number in the first 2-bytes to see if they matched those of the supported compression algorithms. Otherwise it checks if the file extension atches one of the standard extensions for supported compressed files (.gz, .Z, or .bz2).

      As of 1.18, all file extension are checked in a case insensitive manner

      Parameters:
      filename - of the file to test for compression algorithms
      Returns:
      true if the file is compressed
    • nextCompressionProvider

      protected static ICompressProvider nextCompressionProvider(int mag1, int mag2, ICompressProvider old)
      Returned the next highest priority decompression class, after the one we don't want, for the given type of compressed file.
      Parameters:
      mag1 - the first magic byte at the head of the compressed file
      mag2 - the second magic byte at the head of the compressed file
      old - the last decompression class we tried for this type of file
      Returns:
      the next lower priority decompression class we might use.