org.apache.poi.poifs.filesystem

## Enum FileMagic

- java.lang.Object
- - java.lang.Enum<FileMagic>
  - - org.apache.poi.poifs.filesystem.FileMagic

- All Implemented Interfaces:
    java.io.Serializable, java.lang.Comparable<FileMagic>

      public enum FileMagic
      extends java.lang.Enum<FileMagic>

  The file magic number, i.e. the file identification based on the first bytes of the file

- - ### Enum Constant Summary

    Enum Constants
    Enum Constant and Description
    `BIFF2` BIFF2 raw stream - for Excel 2
    `BIFF3` BIFF3 raw stream - for Excel 3
    `BIFF4` BIFF4 raw stream - for Excel 4
    `BMP` BMP image
    `EMF` EMF image
    `GIF` GIF image
    `HTML` Some different HTML documents
    `JPEG` JPEG image
    `MSWRITE` Old MS Write raw stream
    `OLE2` OLE2 / BIFF8+ stream used for Office 97 and higher documents
    `OOXML` OOXML / ZIP stream
    `PDF` PDF document
    `PNG` PNG Image
    `RTF` RTF document
    `TIFF` TIFF Image
    `UNKNOWN` UNKNOWN magic
    `WMF` WMF image with a placeable header
    `WORD2`
    `XML` XML file

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static java.io.InputStream` | `prepareToCheckMagic(java.io.InputStream stream)` Checks if an `InputStream` can be reset (i.e.
    `static FileMagic` | `valueOf(byte[] magic)`
    `static FileMagic` | `valueOf(java.io.File inp)` Get the file magic of the supplied `File`
    `static FileMagic` | `valueOf(java.io.InputStream inp)` Get the file magic of the supplied InputStream (which MUST support mark and reset).
    `static FileMagic` | `valueOf(java.lang.String name)` Returns the enum constant of this type with the specified name.
    `static FileMagic[]` | `values()` Returns an array containing the constants of this enum type, in the order they are declared.

    - ### Methods inherited from class java.lang.Enum

      `clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf`

    - ### Methods inherited from class java.lang.Object

      `getClass, notify, notifyAll, wait, wait, wait`

- - ### Enum Constant Detail

    - #### OLE2

          public static final FileMagic OLE2

      OLE2 / BIFF8+ stream used for Office 97 and higher documents

    - #### OOXML

          public static final FileMagic OOXML

      OOXML / ZIP stream

    - #### XML

          public static final FileMagic XML

      XML file

    - #### BIFF2

          public static final FileMagic BIFF2

      BIFF2 raw stream - for Excel 2

    - #### BIFF3

          public static final FileMagic BIFF3

      BIFF3 raw stream - for Excel 3

    - #### BIFF4

          public static final FileMagic BIFF4

      BIFF4 raw stream - for Excel 4

    - #### MSWRITE

          public static final FileMagic MSWRITE

      Old MS Write raw stream

    - #### RTF

          public static final FileMagic RTF

      RTF document

    - #### PDF

          public static final FileMagic PDF

      PDF document

    - #### HTML

          public static final FileMagic HTML

      Some different HTML documents

    - #### WORD2

          public static final FileMagic WORD2

    - #### JPEG

          public static final FileMagic JPEG

      JPEG image

    - #### GIF

          public static final FileMagic GIF

      GIF image

    - #### PNG

          public static final FileMagic PNG

      PNG Image

    - #### TIFF

          public static final FileMagic TIFF

      TIFF Image

    - #### WMF

          public static final FileMagic WMF

      WMF image with a placeable header

    - #### EMF

          public static final FileMagic EMF

      EMF image

    - #### BMP

          public static final FileMagic BMP

      BMP image

    - #### UNKNOWN

          public static final FileMagic UNKNOWN

      UNKNOWN magic

  - ### Method Detail

    - #### values

          public static FileMagic[] values()

      Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:

          for (FileMagic c : FileMagic.values())
              System.out.println(c);

      Returns:
        an array containing the constants of this enum type, in the order they are declared

    - #### valueOf

          public static FileMagic valueOf(java.lang.String name)

      Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
      Parameters:
        `name` - the name of the enum constant to be returned.
      Returns:
        the enum constant with the specified name
      Throws:
        `java.lang.IllegalArgumentException` - if this enum type has no constant with the specified name
        `java.lang.NullPointerException` - if the argument is null

    - #### valueOf

          public static FileMagic valueOf(byte[] magic)

    - #### valueOf

          public static FileMagic valueOf(java.io.File inp)
                                   throws java.io.IOException

      Get the file magic of the supplied `File`

      Even if this method returns `UNKNOWN` it could potentially mean, that the ZIP stream has leading junk bytes

      Parameters:
        `inp` - a file to be identified
      Throws:
        `java.io.IOException`

    - #### valueOf

          public static FileMagic valueOf(java.io.InputStream inp)
                                   throws java.io.IOException

      Get the file magic of the supplied InputStream (which MUST support mark and reset).

      If unsure if your InputStream does support mark / reset, use `prepareToCheckMagic(InputStream)` to wrap it and make sure to always use that, and not the original!

      Even if this method returns `UNKNOWN` it could potentially mean, that the ZIP stream has leading junk bytes

      Parameters:
        `inp` - An InputStream which supports either mark/reset
      Throws:
        `java.io.IOException`

    - #### prepareToCheckMagic

          public static java.io.InputStream prepareToCheckMagic(java.io.InputStream stream)

      Checks if an `InputStream` can be reset (i.e. used for checking the header magic) and wraps it if not
      Parameters:
        `stream` - stream to be checked for wrapping
      Returns:
        a mark enabled stream

Copyright 2020 The Apache Software Foundation or its licensors, as applicable.