【发布时间】: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