我正在开发一个类的程序,该程序包括创建临时音频文件,从中读取数据,然后删除它。除了删除文件外,我一切正常。当我尝试删除该文件时,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
中。
为什么输入流在关闭后保持文件打开?
答案 0 :(得分:-1)
如果你用BufferedInputStream包装它应该有效
audioInputStream = AudioSystem.getAudioInputStream(new BufferedInputStream(Files.newInputStream(file.toPath())));
文件是来自nio的类
import java.nio.file.Files;