# Class AudioFileReader

java.lang.Object
javax.sound.sampled.spi.AudioFileReader

public abstract class AudioFileReader extends Object
Provider for audio file reading services. Classes providing concrete implementations can parse the format information from one or more types of audio file, and can produce audio input streams from files of these types.

Since:
  1.3

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `AudioFileReader()`
  Constructor for subclasses to call.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `abstract AudioFileFormat`
  `getAudioFileFormat(File file)`
  Obtains the audio file format of the `File` provided.
  `abstract AudioFileFormat`
  `getAudioFileFormat(InputStream stream)`
  Obtains the audio file format of the input stream provided.
  `abstract AudioFileFormat`
  `getAudioFileFormat(URL url)`
  Obtains the audio file format of the `URL` provided.
  `abstract AudioInputStream`
  `getAudioInputStream(File file)`
  Obtains an audio input stream from the `File` provided.
  `abstract AudioInputStream`
  `getAudioInputStream(InputStream stream)`
  Obtains an audio input stream from the input stream provided.
  `abstract AudioInputStream`
  `getAudioInputStream(URL url)`
  Obtains an audio input stream from the `URL` provided.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `int`
  `hashCode()`
  Returns a hash code value for this object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `String`
  `toString()`
  Returns a string representation of the object.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

- ## Constructor Details

  - ### AudioFileReader

    protected AudioFileReader()
    Constructor for subclasses to call.

- ## Method Details

  - ### getAudioFileFormat

    public abstract AudioFileFormat getAudioFileFormat(InputStream stream) throws UnsupportedAudioFileException, IOException
    Obtains the audio file format of the input stream provided. The stream must point to valid audio file data. In general, audio file readers may need to read some data from the stream before determining whether they support it. These parsers must be able to mark the stream, read enough data to determine whether they support the stream, and reset the stream's read pointer to its original position. If the input stream does not support this, this method may fail with an `IOException`.
    Parameters:
      `stream` - the input stream from which file format information should be extracted
    Returns:
      an `AudioFileFormat` object describing the audio file format
    Throws:
      `UnsupportedAudioFileException` - if the stream does not point to valid audio file data recognized by the system
      `IOException` - if an I/O exception occurs
      `NullPointerException` - if `stream` is `null`
    See Also:
      - `InputStream.markSupported()`
      - `InputStream.mark(int)`

  - ### getAudioFileFormat

    public abstract AudioFileFormat getAudioFileFormat(URL url) throws UnsupportedAudioFileException, IOException
    Obtains the audio file format of the `URL` provided. The `URL` must point to valid audio file data.
    Parameters:
      `url` - the `URL` from which file format information should be extracted
    Returns:
      an `AudioFileFormat` object describing the audio file format
    Throws:
      `UnsupportedAudioFileException` - if the `URL` does not point to valid audio file data recognized by the system
      `IOException` - if an I/O exception occurs
      `NullPointerException` - if `url` is `null`

  - ### getAudioFileFormat

    public abstract AudioFileFormat getAudioFileFormat(File file) throws UnsupportedAudioFileException, IOException
    Obtains the audio file format of the `File` provided. The `File` must point to valid audio file data.
    Parameters:
      `file` - the `File` from which file format information should be extracted
    Returns:
      an `AudioFileFormat` object describing the audio file format
    Throws:
      `UnsupportedAudioFileException` - if the `File` does not point to valid audio file data recognized by the system
      `IOException` - if an I/O exception occurs
      `NullPointerException` - if `file` is `null`

  - ### getAudioInputStream

    public abstract AudioInputStream getAudioInputStream(InputStream stream) throws UnsupportedAudioFileException, IOException
    Obtains an audio input stream from the input stream provided. The stream must point to valid audio file data. In general, audio file readers may need to read some data from the stream before determining whether they support it. These parsers must be able to mark the stream, read enough data to determine whether they support the stream, and reset the stream's read pointer to its original position. If the input stream does not support this, this method may fail with an `IOException`.
    Parameters:
      `stream` - the input stream from which the `AudioInputStream` should be constructed
    Returns:
      an `AudioInputStream` object based on the audio file data contained in the input stream
    Throws:
      `UnsupportedAudioFileException` - if the stream does not point to valid audio file data recognized by the system
      `IOException` - if an I/O exception occurs
      `NullPointerException` - if `stream` is `null`
    See Also:
      - `InputStream.markSupported()`
      - `InputStream.mark(int)`

  - ### getAudioInputStream

    public abstract AudioInputStream getAudioInputStream(URL url) throws UnsupportedAudioFileException, IOException
    Obtains an audio input stream from the `URL` provided. The `URL` must point to valid audio file data.
    Parameters:
      `url` - the `URL` for which the `AudioInputStream` should be constructed
    Returns:
      an `AudioInputStream` object based on the audio file data pointed to by the `URL`
    Throws:
      `UnsupportedAudioFileException` - if the `URL` does not point to valid audio file data recognized by the system
      `IOException` - if an I/O exception occurs
      `NullPointerException` - if `url` is `null`

  - ### getAudioInputStream

    public abstract AudioInputStream getAudioInputStream(File file) throws UnsupportedAudioFileException, IOException
    Obtains an audio input stream from the `File` provided. The `File` must point to valid audio file data.
    Parameters:
      `file` - the `File` for which the `AudioInputStream` should be constructed
    Returns:
      an `AudioInputStream` object based on the audio file data pointed to by the File
    Throws:
      `UnsupportedAudioFileException` - if the `File` does not point to valid audio file data recognized by the system
      `IOException` - if an I/O exception occurs
      `NullPointerException` - if `file` is `null`