Because of the problem with the missing significant header for some file types (thanks @Michael) I would create a map of extension to a kind of type checker with a simple API like
public interface TypeCheck throws IOException {
  public boolean isValid(InputStream data);
}
Now you can code something like
File toBeTested = ...;
Map<String,TypeCheck> typeCheckByExtension = ...;
TypeCheck check = typeCheckByExtension.get(getExtension(toBeTested.getName()));
if (check != null) {
  InputStream in = new FileInputStream(toBeTested);
  if (check.isValid(in)) {
    // process valid file
  } else {
    // process invalid file
  }
  in.close();
} else {
  // process unknown file
}
The Header check for JPEG for example may look like
public class JpegTypeCheck implements TypeCheck {
  private static final byte[] HEADER = new byte[] {0xFF, 0xD8, 0xFF, 0xE0};
  public boolean isValid(InputStream data) throws IOException {
    byte[] header = new byte[4];
    return data.read(header) == 4 && Arrays.equals(header, HEADER);
  }
}
For other types with no significant header you can implement completly other type checks.