Java Can';t从文件中创建AudioInputStream后删除文件

Java Can';t从文件中创建AudioInputStream后删除文件,java,delete-file,audioinputstream,Java,Delete File,Audioinputstream,我正在为一个类编写一个程序,其中包括创建一个临时音频文件,从中读取数据,然后删除它。除了删除文件,我的一切都正常。尝试删除文件时,file.delete()返回false。我试图使用java.nio文件来准确地找出错误所在,结果返回另一个进程打开了该文件。在查看了我的代码后,我将其缩小到保持文件打开的AudioInputStream。在创建AudioInputStream之前,我可以很好地删除该文件,但是在创建文件之后,无法删除该文件,尽管我在尝试删除该文件之前关闭了该流 if (file !=

我正在为一个类编写一个程序,其中包括创建一个临时音频文件,从中读取数据,然后删除它。除了删除文件,我的一切都正常。尝试删除文件时,
file.delete()
返回
false
。我试图使用
java.nio
文件来准确地找出错误所在,结果返回另一个进程打开了该文件。在查看了我的代码后,我将其缩小到保持文件打开的
AudioInputStream
。在创建
AudioInputStream
之前,我可以很好地删除该文件,但是在创建文件之后,无法删除该文件,尽管我在尝试删除该文件之前关闭了该流

if (file != null && file.isFile())
{
    try
    {
       audioInputStream = null;
       try
       {
          audioInputStream = AudioSystem.getAudioInputStream(file);
       }  
       catch (Exception e)
       {
           System.out.println(e);
       }
       finally
       {
          audioInputStream.close();
       }    
       System.out.println("Attempted to delete wav file. Succesfull = " + file.delete());
    }
}
我还尝试将
audioInputStream.close()
放在catch之后,而不是放在
finally
中,结果类似


为什么inputstream在文件关闭后仍保持打开状态?

如果使用BufferedInputStream进行包装,它应该可以工作

audioInputStream = AudioSystem.getAudioInputStream(new BufferedInputStream(Files.newInputStream(file.toPath())));
Files是来自nio的类

导入java.nio.file.Files