从文件创建音频输入流后无法删除文件



我正在研究一个涉及创建临时音频文件,从中读取数据然后删除其的程序的程序。除了删除文件外,我的所有工作都有效。当我尝试删除文件时,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之后,结果相似。

为什么输入流关闭后保持打开状态?

如果您用BufferedInputStream包裹

,则应该有效
audioInputStream = AudioSystem.getAudioInputStream(new BufferedInputStream(Files.newInputStream(file.toPath())));

文件是Nio

的类

import java.nio.file.Files;

最新更新