<div dir="ltr">Hello all,<br><br>I wanted to post this as a comment on <a href="https://bugs.openjdk.java.net/browse/JDK-8013586">https://bugs.openjdk.java.net/browse/JDK-8013586</a>, but apparently getting comment access to that system is a bit of a hurdle.  Anyway.  What follows is, I believe, a fix for the aforementioned bug:<br><br>There is a file handle leak in some of the subclasses of javax.sound.sampled.spi.AudioFileReader, such as com.sun.media.sound.WaveFloatFileReader.  <br><br>Consider com.sun.media.sound.WaveFloatFileReader's method:<br><br>public AudioInputStream getAudioInputStream(File file)<br>        throws UnsupportedAudioFileException, IOException {<br>    return getAudioInputStream(<br>        new BufferedInputStream(new FileInputStream(file)));<br>}<br><br>See how there is no attempt to close the FileInputStream if an exception is thrown?  A file handle will remain open on the file until garbage collection is run. Since garbage collection may never run, the file handle may remain open until the JVM exits.  And on Windows the open file handle prevents the file from being deleted, which is problematic.  <br><br>Could we fix it by adding a try/catch block?<br><br>public AudioInputStream getAudioInputStream(File file)<br>        throws UnsupportedAudioFileException, IOException {<br>    FileInputStream fis = null;<br>    try {<br>        fis = new FileInputStream(file);<br>        return getAudioInputStream(new BufferedInputStream(fis));<br>    } catch(IOException|UnsupportedAudioFileException e) {<br>        if (fis != null) {<br>            fis.close();<br>        }<br>        throw e;<br>    }<br>}<br><br>These AudioFileReader subclass methods are usually called by javax.sound.sampled.AudioSystem.getAudioInputStream(File), which calls getAudioInputStream(File) on all registered subclasses of AudioFileReader.  As such, all subclasses of AudioFileReader in the JRE should be reviewed for this problem.<br><br>best regards,<br>-Mike<br><br></div>