从文件创建AudioInputStream后无法删除文件

时间:2017-12-01 04:48:37

标签: java delete-file audioinputstream

我正在开发一个类的程序,该程序包括创建临时音频文件,从中读取数据,然后删除它。除了删除文件外,我一切正常。当我尝试删除该文件时,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()放在捕获后,而不是放在具有类似结果的finally中。

为什么输入流在关闭后保持文件打开?

1 个答案:

答案 0 :(得分:-1)

如果你用BufferedInputStream包装它应该有效

audioInputStream = AudioSystem.getAudioInputStream(new BufferedInputStream(Files.newInputStream(file.toPath())));

文件是来自nio的类

import java.nio.file.Files;