【问题标题】:Can't delete file after creating AudioInputStream from the file从文件创建 AudioInputStream 后无法删除文件
【发布时间】:2017-12-01 04:48:36
【问题描述】:

我正在为一个课程编写一个程序,该程序涉及创建一个临时音频文件,从中读取数据,然后将其删除。除了删除文件外,我一切正常。当我尝试删除文件时,file.delete() 返回false。我试图使用java.nio Files 找出究竟出了什么问题,并返回另一个进程打开了文件。查看我的代码后,我将其缩小到保持文件打开状态的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 中,结果相似。

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

【问题讨论】:

    标签: java delete-file audioinputstream


    【解决方案1】:

    如果你用 BufferedInputStream 包装它应该可以工作

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

    Files 是来自 nio 的类

    import java.nio.file.Files;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-31
      • 2015-06-23
      • 2012-01-29
      • 2018-03-26
      • 2022-01-22
      • 1970-01-01
      • 2017-07-14
      • 1970-01-01
      相关资源
      最近更新 更多