Top Description Fields Constructors Methods
org.apache.poi.poifs.filesystem

public final Enum FileMagic

extends Enum<FileMagic>
Class Inheritance
Imports
java.io.BufferedInputStream, .File, .IOException, .InputStream, java.nio.file.Files, java.util.Arrays, org.apache.poi.poifs.storage.HeaderBlockConstants, org.apache.poi.util.IOUtils, .LittleEndian, .LocaleUtil

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

Field Summary

Modifier and TypeField and Description
public static final FileMagic
BIFF2

BIFF2 raw stream - for Excel 2

public static final FileMagic
BIFF3

BIFF3 raw stream - for Excel 3

public static final FileMagic
BIFF4

BIFF4 raw stream - for Excel 4

public static final FileMagic
BMP

BMP image

public static final FileMagic
EMF

EMF image

public static final FileMagic
GIF

GIF image

public static final FileMagic
HTML

Some different HTML documents

public static final FileMagic
JPEG

JPEG image

pack-priv final byte[][]
pack-priv static final int
public static final FileMagic
MSWRITE

Old MS Write raw stream

public static final FileMagic
OLE2

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

public static final FileMagic
OOXML

OOXML / ZIP stream - The first 4 bytes of an OOXML file, used in detection

public static final FileMagic
PDF

PDF document

public static final FileMagic
PNG

PNG Image

public static final FileMagic
RTF

RTF document

public static final FileMagic
TIFF

TIFF Image

public static final FileMagic
UNKNOWN

UNKNOWN magic

public static final FileMagic
WMF

WMF image with a placeable header

public static final FileMagic
public static final FileMagic
XML

XML file - The first 5 bytes of a raw XML file, used in detection

Constructor Summary

AccessConstructor and Description
private
FileMagic(long magic)

private
FileMagic(int... magic)

private
FileMagic(byte[]... magic)

private
FileMagic(String... magic)

Method Summary

Modifier and TypeMethod and Description
private static boolean
findMagic(byte[] expected, byte[] actual)

public static InputStream

Returns:

a mark enabled stream
prepareToCheckMagic
(InputStream
stream to be checked for wrapping
stream
)

Checks if an InputStream can be reset (i.e. used for checking the header magic) and wraps it if not

public static FileMagic
public static FileMagic
valueOf(byte[] magic)

public static FileMagic
valueOf(final File
a file to be identified
inp
)

Get the file magic of the supplied File

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

public static FileMagic
valueOf(InputStream
An InputStream which supports either mark/reset
inp
)

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

public static FileMagic[]
Inherited from java.lang.Enum:
clonecompareTodescribeConstableequalsfinalizegetDeclaringClasshashCodenameordinaltoStringvalueOf

Field Detail

BIFF2back to summary
public static final FileMagic BIFF2

BIFF2 raw stream - for Excel 2

BIFF3back to summary
public static final FileMagic BIFF3

BIFF3 raw stream - for Excel 3

BIFF4back to summary
public static final FileMagic BIFF4

BIFF4 raw stream - for Excel 4

BMPback to summary
public static final FileMagic BMP

BMP image

EMFback to summary
public static final FileMagic EMF

EMF image

GIFback to summary
public static final FileMagic GIF

GIF image

HTMLback to summary
public static final FileMagic HTML

Some different HTML documents

JPEGback to summary
public static final FileMagic JPEG

JPEG image

magicback to summary
pack-priv final byte[][] magic
MAX_PATTERN_LENGTHback to summary
pack-priv static final int MAX_PATTERN_LENGTH
MSWRITEback to summary
public static final FileMagic MSWRITE

Old MS Write raw stream

OLE2back to summary
public static final FileMagic OLE2

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

OOXMLback to summary
public static final FileMagic OOXML

OOXML / ZIP stream - The first 4 bytes of an OOXML file, used in detection

PDFback to summary
public static final FileMagic PDF

PDF document

PNGback to summary
public static final FileMagic PNG

PNG Image

RTFback to summary
public static final FileMagic RTF

RTF document

TIFFback to summary
public static final FileMagic TIFF

TIFF Image

UNKNOWNback to summary
public static final FileMagic UNKNOWN

UNKNOWN magic

WMFback to summary
public static final FileMagic WMF

WMF image with a placeable header

WORD2back to summary
public static final FileMagic WORD2
XMLback to summary
public static final FileMagic XML

XML file - The first 5 bytes of a raw XML file, used in detection

Constructor Detail

FileMagicback to summary
private FileMagic(long magic)
FileMagicback to summary
private FileMagic(int... magic)
FileMagicback to summary
private FileMagic(byte[]... magic)
FileMagicback to summary
private FileMagic(String... magic)

Method Detail

findMagicback to summary
private static boolean findMagic(byte[] expected, byte[] actual)
prepareToCheckMagicback to summary
public static InputStream prepareToCheckMagic(InputStream stream)

Checks if an InputStream can be reset (i.e. used for checking the header magic) and wraps it if not

Parameters
stream:InputStream

stream to be checked for wrapping

Returns:InputStream

a mark enabled stream

valueOfback to summary
public static FileMagic valueOf(String name)
valueOfback to summary
public static FileMagic valueOf(byte[] magic)
valueOfback to summary
public static FileMagic valueOf(final File inp) throws IOException

Get the file magic of the supplied File

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

Parameters
inp:File

a file to be identified

valueOfback to summary
public static FileMagic valueOf(InputStream inp) throws 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 FileMagic#UNKNOWN it could potentially mean, that the ZIP stream has leading junk bytes

Parameters
inp:InputStream

An InputStream which supports either mark/reset

valuesback to summary
public static FileMagic[] values()